objectARX创建 PaletteSet 停靠面板示例
objectARX创建 PaletteSet 停靠面板示例
图文By edata ,转载注明出处 http://www.cnblogs.com/edata
部分代码参考张帆《AutoCAD ObjectARX(VC)开发基础与实例教程》
以下是源码部分
//001.修改msxml为msxml6
//- Import the MSXML functionality
#import "msxml6.dll" named_guids
//using namespace MSXML ;
//002.#define MSXML 为 MSXML2
#define MSXML MSXML2
//-----------------------------------------------------------------------------
//- Used to add a dialog resource
int CMyPalette1::OnCreate (LPCREATESTRUCT lpCreateStruct) {
if ( CAdUiPalette::OnCreate (lpCreateStruct) == -1 )
return (-1) ;
//- Create it and set the parent as the dockctrl bar
//003 资源覆盖,显示ClildDlg.ShowWindow
CAcModuleResourceOverride myResource;
mChildDlg.Create (IDD_MYPALETTE1, this) ; CRect rect ;
GetWindowRect (&rect) ;
//- Move the window over so we can see the control lines
mChildDlg.ShowWindow(SW_SHOW);
mChildDlg.MoveWindow (0, 0, rect.Width (), rect.Height (), TRUE) ;
return (0) ;
}
//- Called by AutoCAD to steal focus from the palette
bool CMyPalette1::CanFrameworkTakeFocus () {
//- Not simply calling IsFloating() (a BOOL) avoids warning C4800
//return (GetPaletteSet ()->IsFloating () == TRUE ? true : false) ;
//004 设置切换焦点 无论是否停靠均能正常切换焦点
return true ;
}
//005.添加面板
#include "MyPaletteSet.h"
#include "MyPalette1.h"
#include "MyPalette2.h" //----------------------------------------------------------------------------- //006. 定义面板集全局变量
CMyPaletteSet *g_pPaletteSet=NULL;
CMyPalette1 *g_pPalette1=NULL;
CMyPalette2 *g_pPalette2=NULL;
//008. 销毁选项板
if (g_pPaletteSet != NULL)
{
g_pPaletteSet->DestroyWindow();
delete g_pPaletteSet;
g_pPaletteSet = NULL;
}
//007 创建面板集
if (!g_pPaletteSet)
{
// 创建palette set
g_pPaletteSet = new CMyPaletteSet;
CRect rect(0, 0, 90, 400); // 初始大小
g_pPaletteSet->Create(TEXT("自定义选项板"),
WS_OVERLAPPED | WS_DLGFRAME,
rect,
acedGetAcadFrame(),
PSS_EDIT_NAME |
PSS_PROPERTIES_MENU |
PSS_AUTO_ROLLUP |
PSS_CLOSE_BUTTON
);
// 选项板1
g_pPalette1 = new CMyPalette1(); // 自定义的选项板
g_pPalette1->Create(WS_CHILD | WS_VISIBLE, TEXT("选项板1"), g_pPaletteSet, PS_EDIT_NAME);
g_pPaletteSet->AddPalette(g_pPalette1);// 添加到选项板集合
// 选项板2
g_pPalette2 = new CMyPalette2(); // 自定义的选项板
g_pPalette2->Create(WS_CHILD | WS_VISIBLE, TEXT("选项板2"), g_pPaletteSet, PS_EDIT_NAME);
g_pPaletteSet->AddPalette(g_pPalette2);
// 显示选项板集合
g_pPaletteSet->EnableDocking(CBRS_ALIGN_ANY);
g_pPaletteSet->RestoreControlBar();
}
acedGetAcadFrame()->ShowControlBar(g_pPaletteSet, TRUE, FALSE);
// 设置透明度
if (g_pPaletteSet->GetOpacity() != 100)
{
g_pPaletteSet->SetOpacity(100);
}
//设置面板停靠后的最小宽度 ARX2012开始新增函数
AdUiSetDockBarMinWidth(90);
objectARX创建 PaletteSet 停靠面板示例的更多相关文章
- Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板
在上篇文章 Unity3D热更新之LuaFramework篇[01]--从零开始 中,我们了解了怎么获得一个可用的LuaFramework框架. 本篇将我会先介绍一下如何配置Lua开发环境,然后分析在 ...
- 创建PaletteSet的一个问题
下面是一个常规创建PaletteSet面板的代码: public static PaletteSet m_ps = null; [CommandMethod("MyPalette" ...
- MsXml创建和解析XML示例
一.MsXml创建XML文档示例 // XmlCreationDemo.cpp #include <stdlib.h> #include <stdio.h> // 引入MSXM ...
- C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例
Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...
- 使用Express创建一个简单的示例
1.安装Express 使用npm包安装工具来安装Express安装包,打开npm命令行,输入: npm install -g express 2.创建一个工程 本示例是在windows下创建的,项目 ...
- VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)
鸡啄米在上一节教程中讲了工具栏资源及CToolBar类,本节继续讲解工具栏的相关知识,主要内容包括工具栏的创建.停靠与使用. 工具栏的使用 上一节中鸡啄米提到过,一般情况下工具栏中的按钮在菜单栏中都有 ...
- VS2010-MFC(工具栏:工具栏的创建、停靠与使用)
转自:http://www.jizhuomi.com/software/217.html 上一节教程讲了工具栏资源及CToolBar类,本节继续讲解工具栏的相关知识,主要内容包括工具栏的创建.停靠与使 ...
- JavaScript创建读取cookie代码示例【附:跨域cookie解决办法】
使用JavaScript 原生存取cookie代码示例: var cookie = { set : function(name, value, expires, path, domain, secur ...
- Maven 创建项目之简单示例
maven 是一个项目管理工具.可以用来管理jar包依赖,构建项目等. 那么接下来,就在eclipse中使用maven创建一个简单的项目. 1,依次点击File-> New -> Othe ...
随机推荐
- mysql 删除死锁的事务
select * from information_schema.innodb_trxkill 953
- nasm 与 masm语法区别
看到一篇文章,是介绍nasm语法的:http://blog.csdn.net/hitop0609/article/details/4329454 masm是微软专门为windows下汇编而写的,而na ...
- animate.css动画种类
animate.css 一个非常好用的css动画库 Github地址 包括了一下多种动画 1. bounce 弹跳 2. flash 闪烁 3. pulse 放大,缩小 4. rubberBand 放 ...
- 电话号码的字母组合 · Letter Combinations of a Phone Number
[抄题]: Given a digit string excluded 01, return all possible letter combinations that the number coul ...
- Win10 Cygwin Cd Permission denied
问题描述 在win10或者win系统上面,使用cygwin的时候, 有时候会出现, 权限问题. 即使是管理员也不行. 问题分析 这个问题,我个人觉得,主要是使用不当造成的. 也就是说, 可能使用chm ...
- Python爬虫利器一之Requests库的用法
前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...
- vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化
测试的时候发现,在选择模板.选择产品第二步第三步的时候.如果超出两行的话会盖住看不见,(因为高度所有统一都被写死了,又加了overflow~emmm~)所以要改成走马灯形式.如图: 那么问题来了,我步 ...
- 打开Android Studio时报Unable to access Android SDK add-on list
第一次安装Android studio时候弹出unable to access android sdk add-on list原因是你电脑没有SDK而且你下载的android studio又是不带SD ...
- mongo学习- group操作
group可以使用 $sum,$avg,$max,$min,$first,$last
- Smart Thread Pool (智能线程池)
STPStartInfo stp = new STPStartInfo(); stp.DisposeOfStateObjects = true; stp.CallToPostExecute = ...