基于 Direct3D 保持模式的 CStatic 派生类






3.90/5 (11投票s)
2001年4月3日

92242

2008
一个 CStatic 派生类,可以放入应用程序中,提供加载和显示 3D 对象的功能。

概述
C3DPortal
类是一个从 CStatic
派生的类,我编写它允许程序员将其放入项目中,并能够使用 Direct3D 保留模式加载和显示 3D 对象。 我也开始尝试手动构建对象,如 Test()
函数所示。 请注意,如果您想尝试此函数,则必须先加载一个有效的对象。 我本来可以继续改进它,等等,但我正在转向即时模式,并且不想再深入研究保留模式。
公共方法
以下记录了宿主应用程序通常使用的函数。
void BrowseForTexture()
提示用户浏览用于作为纹理的位图(随后将应用于加载的对象)
bool LoadMesh(LPTSTR lpszMeshName= "")
如果 lpszMeshName 为空,则将提示用户浏览一个 X 文件,以便在控件中显示。 如果加载成功,则返回 true。
void SetColourBackground(COLORREF cr)
根据提供的 COLORREF 参数设置背景颜色。
C3DPortal 的示例用法
在您的头文件中
#include "3DPortal.h" ... class CPortalDemoDlg : public CDialog { // Construction public: C3DPortal m_stcPortal; // This member variable is
// associated with a CStatic // resource whose ID is IDC_STATIC_PORTAL ...
在您的实现文件中
BOOL CPortalDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); m_stcPortal.Create("", WS_VISIBLE|SS_NOTIFY|SS_SUNKEN, C3DPortal::GetRect(IDC_STATIC_PORTAL, this),(CWnd*)this); m_stcPortal.LoadMesh(); return TRUE; // return TRUE unless you set the focus to a control }