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. 【319】Python 通过 Twilio 发短信

    参考:python利用twilio模块给自己发短信 参考:使用python实现往手机发短信(基于twilio) 步骤如下: 登录 Twilio 网站注册,貌似需要***,包括用户名.密码.手机号.项目 ...

  2. Python运维开发基础03-语法基础

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现" ...

  3. 26.Remove Duplicates from Sorted Array(Array)

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  4. sql server 日期转换

    一.时间函数 在使用存储过程,sql函数的时候,会遇到一些对时间的处理.比如时间的获取与加减.这里就用到了sql自带的时间函数.下面我列出这些函数,方便日后记忆,使用. --getdate 获取当前时 ...

  5. SqlMapConfig.xml配置文件中的mapper映射器标签

    Mapper配置的几种方式: 1. <mapper resource=" "/> 使用相对于类路径的资源 如:<mapper resource="com ...

  6. TableLayout 中不显示动态添加的tableRow

    下面的代码不显示: TableRow lay = new TableRow(layIndex.getContext()); lay.setLayoutParams(lpRow); //layIndex ...

  7. UVA 11865 Stream My Contest (二分+最小树形图)

    题意:给定一个网络,一个服务器,其他的是客户机,有 m 条连线,每条有一个带宽和花费(单向边),让你用不超过 c 的花费,使得 0 到 所有的机器都能到达,并且使得最小带宽最大. 析:很明显是二分题, ...

  8. windows7文件夹怎样默认图片大图显示?

    先打开一个含有图片的文件夹,在文件夹空白处右键选择属性,打开自定义选项卡. 确定自定义选项卡 显示的是:“优化此文件夹:图片”. 然后,选择:组织--文件夹和搜索选项--查看--文件夹视图,应用到文件 ...

  9. 支付宝 iOS SDK 官方下载页面[转]

    from:http://blog.sina.com.cn/s/blog_6f72ff900102v0sw.html 藏得太深了,不得不记下来!     官方页面地址:   https://b.alip ...

  10. struts2 入门程序

    1.struts 2.5.2 基本jar包 2.web.xml <!-- Filters --> <!-- START SNIPPET: filter --> <filt ...