因为工作需要,我从CAdUiDockControlBar派生了一个控制条类,然后创建一个CHILD对话框.其父窗口为这个控制条类,这样在创建控制条的时候将对话框也创建出来,就能让对话框停靠在CAD上.代码是在ObjectArx2002+VC6.0下写的,因为要兼容CAD02~CAD08不同的版本,所以不同的环境选用了不同的Arx.现在一个很苦恼的问题一直困扰着我,在ObjectArx2007+VS2005的环境下始终链接错误UeDlgDockControlBar.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: int __thiscall CAdUiDockControlBar::Create(wchar_t const *,wchar_t const *,unsigned long,struct tagRECT const &,class CWnd *,unsigned int,struct CCreateContext *)" (__imp_?Create@CAdUiDockControlBar@@QAEHPB_W0KABUtagRECT@@PAVCWnd@@IPAUCCreateContext@@@Z),该符号在函数 "public: virtual int __thiscall UeDlgDockControlBar::Create(class CWnd *,wchar_t const *,int)" (?Create@UeDlgDockControlBar@@UAEHPAVCWnd@@PB_WH@Z) 中被引用, 在VC6.0下写的那段代码如下: #if defined ARX2007 && !defined _UNICODE BOOL UeDlgDockControlBar::Create (CWnd *pParent, LPCSTR lpszTitle) { CString strWndClass ; strWndClass =AfxRegisterWndClass (CS_DBLCLKS, LoadCursor (NULL, IDC_ARROW)) ; CRect rect (0, 0, 250, 200) ; if ( FALSE == CAcUiDockControlBar::Create ( (LPCWSTR)(LPCTSTR)strWndClass, (LPCWSTR)(LPCTSTR)(lpszTitle), WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, rect, pParent, 0 ) ) { return (FALSE) ; } SetToolID (&clsMyControl) ; // TODO: Add your code here return (TRUE) ; }*/
#if defined ARX2007 && !defined _UNICODE int UeDlgDockControlBar::OnCreate(LPCREATESTRUCTW lpCreateStruct) { if ( CAcUiDockControlBar::OnCreate (lpCreateStruct) == -1 ) return (-1) ; //资源切换 CAcModuleResourceOverride resourceOverride; //创建对话框 m_pDlgCurObject->Create( m_lDlgID, this ); m_pDlgCurObject->MoveWindow( 0,0,10,10,TRUE ); return (0) ; } 工程中所要链接的库我都做了相应的升级.如acdb15.lib,都改成了acdb17. 使用的lib目录也改成了Object2007下的lib目录.如果我单独在VS2005下用ObjARXWiz生成以上代码却没有任何问题,看了arx07下CAdUiDockControlBar::Create()是和OnCreate()是做了条件编译的,我也就加了条件编.我不晓得上面的问题的怎么出现的.是没有增加链接文件吗?请求各位帮帮忙解决一下,本人很是感激!
|