今天热门
热点:

DXUTSetWindow()所指定的窗口,如何和其它的CDXUTDialog窗口一起工作,dialog窗口层


使用DXUTSetWindow()可以指定一个自己的窗口做为Direct3D的主窗口,但是其它的CDXUTDialog类型的窗口却出不来了。
下面是我的一段程序,是一个对话框的MFC程序,在对话框上我放了一个按钮,然后在它的点击事件(OnBnClickedBtndxuttest())中调用DXUT的函数,其实就是把d3d的一个例子拿过来,把它的main()函数中的代码放到了OnBnClickedBtndxuttest()中,如此而已,相关的代码如下:

// 使用DXUT界面
void Cwin3dDlg::OnBnClickedBtndxuttest()
{
DXUTSetCallbackD3D9DeviceCreated( OnCreateDevice );
DXUTSetCallbackD3D9DeviceReset( OnResetDevice );
DXUTSetCallbackD3D9FrameRender( OnFrameRender );
    DXUTSetCallbackD3D9DeviceLost( OnLostDevice );
    DXUTSetCallbackD3D9DeviceDestroyed( OnDestroyDevice );
DXUTSetCallbackMsgProc( D3MsgProc );
    DXUTSetCallbackFrameMove( OnFrameMove );

InitDialog();

//DXUTCreateDevice();   // 行1,后面会说这里的问题
InitToD3D();            // 行2

DXUTMainLoop();
}

void Cwin3dDlg::InitToD3D()
{
HWND hWnd = m_hWnd;
DXUTSetWindow( hWnd, hWnd, hWnd );
}

void InitDialog()
{
g_SampleUI.Init( &g_DialogResourceManager, false );
g_SampleUI.AddButton( IDC_BTN_IMEENABLE, L"Enable (I)ME", 30, 390, 80, 35, L'I' );
}

在用demo中的代码行1时,g_SampleUI上的按钮可以显示出来,但是换到我自己的代码行2时,g_SampleUI上的按钮就不会显示。
采用行2,实际上就是把本MFC的对话框做为Direct3D的主窗口来着的,我在网上搜索,没有发现一个贴子说这个问题的

示例代码下载地址:
http://download.csdn.net/source/1728077
请按窗口上的“DXUT”按钮进行测试
通过把行1和行2交替注释掉进行效果对比

解决方案



InitToD3D();            // 行2 
DXUTCreateDevice();  // 行1,后面会说这里的问题 

两行都要用,createdevice少不了。

www.zrccd.nettrue/topics/20180124/125175.htmlTechArticleDXUTSetWindow()所指定的窗口,如何和其它的CDXUTDialog窗口一起工作,dialog窗口层 使用DXUTSetWindow()可以指定一个自己的窗口做为Direct3D的主窗口,但是其它的CDXUTDialog类型的窗口却出不来了。...

相关文章

    暂无相关文章

用户评论

大家都在看