DXUT控件

本文档详细介绍了DXUT框架中对话框类的使用,包括如何创建和管理控件,以及在Direct3D应用中集成Windows控件的方法,为开发者提供了一种便捷的界面交互实现。
摘要由CSDN通过智能技术生成

 

 
查看文章
 
DXUT控件
2009-02-01 15:19

1:DirectX9c版本以上才支持DXUT控件

2:与windows控件非常 类似,但是它们的内部实现和windows普通控件完全不同,其底层不涉及任何窗口句柄和Windows控件。DXUT控件的渲染也是由D3D完成的,适用于窗口模式和全屏模式。

3:DirectX Documentation for 中只有DXUT框架的介绍,没有控件的文档,直接查看DXUT源码中的GUI.h文件,查到如下结果。

Control typeClass that implements it
StaticsCDXUTStatic
ButtonsCDXUTButton
Radio buttonsCDXUTRadioButton
Check boxesCDXUTCheckBox
Combo boxesCDXUTComboBox
SlidersCDXUTSlider
Edit boxesCDXUTEditBox
Edit boxes with IME capabilityCDXUTIMEEditBox

定义了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 )
从此可以看出CDXUTDialogResourceManager向CDXUTDialog传递pManager参数,达到了管理CDXUTDialog资源的目的,再由CDXUTDialog来管理各种控件。

7:添加滚动条与其它的不一样:

CDXUTScrollBar* pScrollBar = new CDXUTScrollBar(&g_SampleUI);
g_SampleUI.AddControl(pScrollBar);
pScrollBar->SetID(IDC_SCORLLBAR);
pScrollBar->SetTrackRange(0, 100);

8:渲染对话框:

V( g_SampleUI.OnRender( fElapsedTime ) );

9:处理DXUT消息:
为防止控件被多次渲染在MsgProc()中添加:

*pbNoFurtherProcessing = g_SampleUI.MsgProc( hWnd, uMsg, wParam, lParam );
    if( *pbNoFurtherProcessing )
        return 0;

10:释放在OnResetDevice()中创建的资源:

g_DialogResourceManager.OnLostDevice();
    g_SettingsDlg.OnLostDevice();

11:释放在OnCreateDevice()中创建的资源:

   g_DialogResourceManager.OnDestroyDevice();
    g_SettingsDlg.OnDestroyDevice();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值