问题描述
C++在调用C#生成的tlb的时候遇到这样的问题。C++部分:CoInitialize(NULL);{//CWnd*ppWnd=GetDlgItem(ID_***);//取得控件的指针//HWNDphwnd=ppWnd->GetSafeHwnd();CWnd*pWnd=(GetDlgItem(IDC_STATIC));HWNDhwnd=pWnd->GetSafeHwnd();//ptr.CreateInstance(RulesManager::CLSID_VCARule);CWnd*pMD=(CWnd*)AfxGetMainWnd();HWNDnhwnd=pMD->GetSafeHwnd();MyInterop::ITestPtrptr;ptr.CreateInstance(MyInterop::CLSID_MyUserControl);ptr->ShowBox((long)hwnd);}CoUninitialize();
C#部分:[DllImport("user32")]publicexternstaticIntPtrSetParent(IntPtrhWndChild,IntPtrhWndNewParent);publicvoidShowBox(IntPtrParenthWnd){try{SetParent(this.Handle,ParenthWnd);}catch(Exceptionex){throw;}}
最终MFC界面控件上可以显示加载C#的用户控件,但是为什么点击C#的用户控件按钮,却没有反应,并且程序界面卡死呢?
解决方案
时间: 2024-08-03 03:22:03