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 停靠面板示例的更多相关文章

  1. Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板

    在上篇文章 Unity3D热更新之LuaFramework篇[01]--从零开始 中,我们了解了怎么获得一个可用的LuaFramework框架. 本篇将我会先介绍一下如何配置Lua开发环境,然后分析在 ...

  2. 创建PaletteSet的一个问题

    下面是一个常规创建PaletteSet面板的代码: public static PaletteSet m_ps = null; [CommandMethod("MyPalette" ...

  3. MsXml创建和解析XML示例

    一.MsXml创建XML文档示例 // XmlCreationDemo.cpp #include <stdlib.h> #include <stdio.h> // 引入MSXM ...

  4. C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例

    Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...

  5. 使用Express创建一个简单的示例

    1.安装Express 使用npm包安装工具来安装Express安装包,打开npm命令行,输入: npm install -g express 2.创建一个工程 本示例是在windows下创建的,项目 ...

  6. VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)

    鸡啄米在上一节教程中讲了工具栏资源及CToolBar类,本节继续讲解工具栏的相关知识,主要内容包括工具栏的创建.停靠与使用. 工具栏的使用 上一节中鸡啄米提到过,一般情况下工具栏中的按钮在菜单栏中都有 ...

  7. VS2010-MFC(工具栏:工具栏的创建、停靠与使用)

    转自:http://www.jizhuomi.com/software/217.html 上一节教程讲了工具栏资源及CToolBar类,本节继续讲解工具栏的相关知识,主要内容包括工具栏的创建.停靠与使 ...

  8. JavaScript创建读取cookie代码示例【附:跨域cookie解决办法】

    使用JavaScript 原生存取cookie代码示例: var cookie = { set : function(name, value, expires, path, domain, secur ...

  9. Maven 创建项目之简单示例

    maven 是一个项目管理工具.可以用来管理jar包依赖,构建项目等. 那么接下来,就在eclipse中使用maven创建一个简单的项目. 1,依次点击File-> New -> Othe ...

随机推荐

  1. mysql 删除死锁的事务

    select * from information_schema.innodb_trxkill 953

  2. nasm 与 masm语法区别

    看到一篇文章,是介绍nasm语法的:http://blog.csdn.net/hitop0609/article/details/4329454 masm是微软专门为windows下汇编而写的,而na ...

  3. animate.css动画种类

    animate.css 一个非常好用的css动画库 Github地址 包括了一下多种动画 1. bounce 弹跳 2. flash 闪烁 3. pulse 放大,缩小 4. rubberBand 放 ...

  4. 电话号码的字母组合 · Letter Combinations of a Phone Number

    [抄题]: Given a digit string excluded 01, return all possible letter combinations that the number coul ...

  5. Win10 Cygwin Cd Permission denied

    问题描述 在win10或者win系统上面,使用cygwin的时候, 有时候会出现, 权限问题. 即使是管理员也不行. 问题分析 这个问题,我个人觉得,主要是使用不当造成的. 也就是说, 可能使用chm ...

  6. Python爬虫利器一之Requests库的用法

    前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...

  7. vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化

    测试的时候发现,在选择模板.选择产品第二步第三步的时候.如果超出两行的话会盖住看不见,(因为高度所有统一都被写死了,又加了overflow~emmm~)所以要改成走马灯形式.如图: 那么问题来了,我步 ...

  8. 打开Android Studio时报Unable to access Android SDK add-on list

    第一次安装Android studio时候弹出unable to access android sdk add-on list原因是你电脑没有SDK而且你下载的android studio又是不带SD ...

  9. mongo学习- group操作

    group可以使用 $sum,$avg,$max,$min,$first,$last

  10. Smart Thread Pool (智能线程池)

    STPStartInfo stp = new STPStartInfo();   stp.DisposeOfStateObjects = true;   stp.CallToPostExecute = ...