65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.90/5 (11投票s)

2001年4月3日

viewsIcon

92242

downloadIcon

2008

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

概述

C3DPortal 类是一个从 CStatic 派生的类,我编写它允许程序员将其放入项目中,并能够使用 Direct3D 保留模式加载和显示 3D 对象。 我也开始尝试手动构建对象,如 Test() 函数所示。 请注意,如果您想尝试此函数,则必须先加载一个有效的对象。 我本来可以继续改进它,等等,但我正在转向即时模式,并且不想再深入研究保留模式。

C3DPortal Class Outline

公共方法

以下记录了宿主应用程序通常使用的函数。

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
}
© . All rights reserved.