全局接口函数说明:
UINT zdsw_excuteUICommand(
UICOMMANDPROC pfnUICMDProc, //用户定义回调函数指针 LPVOID pParam );
参 数:
pfnUICMDProc——用户自定义函数指针,用户必须把创建、修改、显示界面元素的代码写在该函数内。
pParam——用户自定义参数,该参数用户可由用户根据需要自由传值,最终会作为指针pfnUICMDProc所指向的函数的输入参数。 返回值:
如果pfnUICMDProc为空或调用过程发生错误,返回值为-1,否则返回pfnUICMDProc所指向回调函数执行的结果状态。
//用户自定义参数
回调函数定义说明:
可停靠面板定义的回调函数格式如下:
UINT CallBackFunc(LPVOID pParam) {
//To Do: }
return -1;
代码示例:
// 定义可停靠窗口功能类,并实现 class CSCRMenu : public CDialogBar {
DECLARE_DYNAMIC(CSCRMenu)
public:
CSCRMenu();
virtual ~CSCRMenu();
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
public:
protected:
CComboBox m_LayerComboBox; BOOL ScreenMenu();
CListCtrl m_EntityInfoList;
protected:
void InitDCEditButton(); void InitLayerComboBox();
protected:
DECLARE_MESSAGE_MAP()
public: };
//定义用户自定义回调函数:
UINT CreateScreenMenu(LPVOID pParam) { }
// 转接功能函数到ZWCAD主UI线程上执行 void CreatSCRMenu() { }
zdsw_executeUICommand(CreateScreenMenu, &m_SCRMenu); if(pParam) { }
return -1;
return ((CSCRMenu*)pParam)->ScreenMenu(); afx_msg void OnBtnMessagebox(); afx_msg void OnBtnLine();
afx_msg LRESULT OnInitDialog(WPARAM wParam, LPARAM lParam); afx_msg void OnBtnDCEdit(); afx_msg void OnBtnGetObjInfo(); afx_msg void OnBtnCloseupLayer();
注意事项:
1)创建界面的所有元素必须在特定函数内实现,并以该函数指针作为输入参数,通过使用全局接口函数zdsw_ExecuteUICommand调用来达到功能上的实现,切记不能直接在ZRX命令里创建用户界面;
2)在用户消息响应代码里,需要修改图纸数据的操作时,必须调用zcedPostCommand发送ZRX命令名以触发ZRX命令函数的方式进行。由于从发送ZRX命令名到执行ZRX命令不是即时的,所以调用zcedPostCommand之后不宜编写其它逻辑代码。
3) 调用此接口创建用户界面的二次开发应用程序必须为MFC扩展DLL,否则无法正常创
建用户界面。
全局函数应用
ZRX除了提供了一些应用功能类接口,同时也提供了各种应用的全局函数,限于章节,不在此一一阐述,详细请参见 《附录A:》。
ZZR移植 RX植指X移指南南 本指南主要讲述,如何从原在AutoCAD上运行的ObjectARX的应用程序移植到ZWCAD上,并且能够正常、正确地运行。在前面《ZRX介绍》章节里,我们已经介绍了ZRX在代码上已经作到能够很好地兼容ARX代码,因此在ARX程序在向ZRX移植时,几乎不用修改用户代码,通过修改工程配置,重新编译链接,便可以转接到ZWCAD上来运行,以下是针对不同版本间移植的步骤。
从ObjectARX 2006移植到ZRX
移植的步骤:
1)首先用Visual Studio 2008打开该工程,按提示信息提示将原工程升级为vc9工程。 2)在工程属性对话框的C/C++-->General(常规)-->Additional(附加包含目录)中,修改头文件包含路径为ZRXSDK\\arxport的对应的目录,删掉原先的头文件包含路径。例如头文件包含路径为“C:\\ZRXSDK\\ arxport”。
3) 在工程属性对话框的Linker(链接器)-->Input(输入)-->Additional Dependencies(附加依赖