• 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);
    

      

  • 相关阅读:
    redis的实现过程
    文件流的操作
    已知json类型根据类型封装集合
    linq小知识总结
    设计模式之策略模式
    jq实现竞拍倒计时
    SqlDependency缓存数据库表小案例
    渗透之路基础 -- 初窥文件解析漏洞
    渗透之路基础 -- 文件上传
    渗透之路进阶 -- SQL注入进阶(盲注和报错注入)
  • 原文地址:https://www.cnblogs.com/edata/p/10560516.html
Copyright © 2020-2023  润新知