Style3D屬性面板的開發指南

來源:互聯網
上載者:User

標籤:style   color   使用   os   檔案   資料   

  1. 類結構簡介

我已經封裝成了架構式程式,有固定可靠的資料流程,開發人員只需完成簡單的幾個架構屬性的編寫,即可輕鬆完成子對話方塊選項卡的設計,無需手動管理物體列表的變化或者選項卡的切換。可以按照普通對話方塊一樣任意添加各種控制項,資料交換也是通過基類中Frame,Doc,三個View的指標即可實現,無需手動賦值。

兩個基類:

class MeshPropertyBase{CPiFrame* m_pPiFrame;CModelView* m_pModelView;CPatView* m_pPatView;CLayoutView* m_pLayoutView;CPiDoc* m_pPiDoc;//這些指標可以供使用者調用程式中的資料,但是在建構函式中是不確定的,在OnInitDialog()第一步就是確定這些值int meshid;//選中Mesh的IDString m_strName;//tab上的標題virtual void GetData();//每次更換物體時調用virtual void InitData(int m_MeshNum);//每次更新物體列表時調用,準備內部的資料結構的大小virtual void UpdateViews();//調用各種view的render()UINT m_nIDTemplate;//記住自己的視窗ID模板}class MeshPropertySecondBase:public MeshPropertyBase,public CDialog

屬性面板類

class MeshPropertyDlg : public CDialogBar,public MeshPropertyBase{    ......    public:    vector<MeshPropertySecondBase*> m_MeshDlgs;//mesh物體選項卡指標集合vector<MeshPropertySecondBase*> m_SceneDlgs;//需要添加有關自己對話方塊代碼MeshPropertyMaterialSet m_MeshPM;MeshPropertyTextureSet m_MeshPT;MeshPropertyLightSet m_SceneL;MeshPropertyShaderSet m_SceneS;//這是四個子對話方塊類的執行個體    ......}

子對話方塊類例子:

class MeshPropertyTextureSet : public MeshPropertySecondBase

2.如何編寫子對話方塊

添加mfc類,選擇CDialog作為基類,這樣就添加一個對話方塊。寬122*266高,屬性中,border 為 none,style 為 child,必須設定為child

.h檔案中添加

#include "MeshPropertyBase.h"

.cpp檔案中添加

#include "ModelView.h"#include "PatView.h"#include "PIDoc.h"

將基類CDialog改為 MeshPropertySecondBase

將建構函式中的:CDialog(MeshPropertyTextureSet::IDD, pParent)改為MeshPropertySecondBase(MeshPropertyTextureSet::IDD, pParent)

在建構函式中添加tab選項卡的標題

m_strName = "紋理";

實現兩個虛函數,當然你不需要的話也可以不實現

virtual void GetData();//每次更換物體時添加virtual void InitData(int m_MeshNum);//每次更新物體列表時,準備內部的資料結構的大小,m_MeshNum是mesh的總數量

在屬性面板 MeshPropertyDlg 中的工作如下:

.h檔案類聲明中添加子對話方塊執行個體

MeshPropertyTextureSet m_MeshPT;

.cpp檔案中,建構函式中將子對話方塊指標添加到指標集合,這是為了背景程式的自動調用

m_MeshDlgs.push_back(&m_MeshPT);//如果是Mesh物體的選項卡m_SceneDlgs.push_back(&m_SceneS);//如果是Scene物體的選項卡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.