查看文章
|
1:DirectX9c版本以上才支持DXUT控件 2:与windows控件非常 类似,但是它们的内部实现和windows普通控件完全不同,其底层不涉及任何窗口句柄和Windows控件。DXUT控件的渲染也是由D3D完成的,适用于窗口模式和全屏模式。 3:DirectX Documentation for 中只有DXUT框架的介绍,没有控件的文档,直接查看DXUT源码中的GUI.h文件,查到如下结果。
定义了class CDXUTControl派生关系: CDXUTControl--->CDXUTStatic--->CDXUTButton--->( CDXUTCheckBox,CDXUTComboBox) class CDXUTRadioButton : public CDXUTCheckBox class CDXUTSlider : public CDXUTControl class CDXUTEditBox : public CDXUTControl class CDXUTIMEEditBox (输入法编辑器): public CDXUTEditBox class CDXUTScrollBar : public CDXUTControl 4:框架还定义了CDXUTDialog,可以看作是封装了多个DXUT控件的容器。它位于Direct3D应用程序和DXUT控件之间,D3D程序可以向它传递消息,并渲染CDXUTDialog对话框,而CDXUTDialog确保其包含的所有控件能够接收到消息并正确渲染。DXUT控件不能离开CDXUTDialog而单独使用。D3D程序中可以有多个CDXUTDialog对话框。 5:网上找一个结束DXUT的网站http://www.dtek.chalmers.se/groups/3dspel04/doxygen/class_c_d_x_u_t_dialog_resource_manager.html 6:为统一管理资源,定义了CDXUTDialogResourceManager,并且其中有一个CDXUTDialogResourceManager::AddTexture可以向控件添加纹理。 void CDXUTDialog::Init( CDXUTDialogResourceManager* pManager, bool bRegisterDialog ) 7:添加滚动条与其它的不一样: CDXUTScrollBar* pScrollBar = new CDXUTScrollBar(&g_SampleUI); 8:渲染对话框: V( g_SampleUI.OnRender( fElapsedTime ) ); 9:处理DXUT消息: *pbNoFurtherProcessing = g_SampleUI.MsgProc( hWnd, uMsg, wParam, lParam ); 10:释放在OnResetDevice()中创建的资源: g_DialogResourceManager.OnLostDevice(); 11:释放在OnCreateDevice()中创建的资源: g_DialogResourceManager.OnDestroyDevice(); |