Style3D属性面板的开发指南

  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的ID
	String 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物体的选项卡

Style3D属性面板的开发指南

时间: 2024-10-10 06:39:31

Style3D属性面板的开发指南的相关文章

七日Python之路--第十二天(Django Web 开发指南)

<Django Web 开发指南>.貌似使用Django1.0版本,基本内容差不多,细读无妨.地址:http://www.jb51.net/books/76079.html (一)第一部分 入门 (1)内置数字工厂函数 int(12.34)会创建一个新的值为12的整数对象,而float(12)则会返回12.0. (2)其他序列操作符 连接(+),复制(*),以及检查是否是成员(in, not in) '**'.join('**')   或  '***%s***%d' % (str, int)

开发指南专题八:JEECG微云快速开发平台数据字典

   开发指南专题八:JEECG微云快速开发平台数据字典的使用 1.标签中使用数据字典 数据字典为系统中可能用到的字典类型数据提供了使用的便利性和可维护性.以下拉框标签<t:dictSelect>为例进行讲解 1.1. 标签参数 属性名 类型 描述 是否必须 默认值 typeGroupCode string 字典分组编码 是 null field string 对应表单 是 null id string 唯一标识 否 null title string 显示文本 否 null defaul

开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm

10.4Validform对象[方法支持链式调用] 如示例 var demo=$(".formsub").Validform(),那么demo对象会有以下属性和方法可以调用: tipmsg[object] 如:demo.tipmsg.s="error! no messageinputed."; 通过该对象可以修改除 tit 以外的其他提示文字,这样可以实现同一个页面的不同表单使用不同的提示文字. 具体可修改的提示文字 $.Tipmsg={//默认提示文字; tit:

开发指南专题五:JEECG微云快速开发平台代码生成器

开发指南专题五:JEECG微云快速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,需要先配置好本机的maven环境,并在eclipse中安装好m2eclipse插件. 1. maven版本的工程目录,代码结构如图311所示. 2. 针对本机开发环境(这里以eclipse为例),调整依赖包和项目属性 首先在工程上右键->properties,在builders选项卡中删除掉不存在或不需要的builders,如图312所示. 然后进入Java Bu

开发指南专题五:JEECG微云高速开发平台代码生成器

开发指南专题五:JEECG微云高速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,须要先配置好本机的maven环境,并在eclipse中安装好m2eclipse插件. 1. maven版本号的project文件夹,代码结构如图311所看到的. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdkYWlzY290dA==/font/5a6L5L2T/fontsize/400/fill/I0JBQ

转:Oculus Unity Development Guide开发指南(2015-7-21更新)

http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=34175 Oculus Unity Development Guide开发指南转载请保留原始地   http://t.cn/RAblKoh Oculus/GearVR开发者群 302294234 Welcometo the Unity Development GuideIntroduction简介Welcometo the Oculus Unity Developer Gui

AngularJS开发指南7:AngularJS本地化,国际化,以及兼容IE低版本浏览器

AngularJS本地化,国际化 国际化,简写为i18n,指的是使产品快速适应不同语言和文化. 本地化,简称l10n,是指使产品在特定文化和语言市场中可用. 对开发者来说,国际化一个应用意味着将所有的文字和其他因地区而异的数据从应用中抽离出来. 本地化意味着为这些抽离的数据和文字提供翻译和转变成本地的格式. 目前,AngularJS支持日期,数字和货币的国际化和本地化. 另外,AngularJS还通过ngPluralize指令支持本地多元化. 所有的AngularJS本地化组件都依赖于$loca

开发者必看|Android 8.0 新特性及开发指南

背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Android 新系统开发者预览版时已给新系统取名为 Android O.自2008 年发布以来, Android 依靠 Google 的生态运作,全球市场份额在2016年底已超过85% .而近几年依靠 Android 发展起来的智能手机厂商不断增加, Android 生态大家庭也正在不断壮大. Androi

融云IM 基础服务开发指南WebIMLib API 示例 【干货】

Web SDK API 示例 简介 融云 Web SDK API 用法及常见异常总结,为了方便刚接触融云 Web SDK 开发者朋友们写下此文档,希望可以帮到你们. 说明: 1.函数参数中使用 [] 为可选参数(数组除外). 2.**** => **** 在本文档中表示为示例代码和结果,例:1+2 => 3. 初始化 初始化 SDK 执行初始化需要在开发者后台新建应用得到 AppKey 和 token,初始化代码: RongIMLib.RongIMClient.init(appkey,[dat