wxWidgets 和 MFC 混合使用
其实网上有很多此类的文章了,但是有一点细节没有提到。
举例说,我们有一个MFC写的APP,调用了很多MFC DLL,DLL里面有Dialog。如果我们要用wxWidget重写其中的一个Dialog,并且要这个Dialog ShowModal,就会需要到一点小小的技巧。
void DllConfig(HWND hParent)
{
ConfigDialog dlg(Null);
dlg.ShowModal();
}
这个ShowModal是不会正常工作的,因为parent为NULL。为了正常工作,构造需要ConfigDialog(wxWindow *parent...),而传进来的参数是RAW Handle。怎么办呢?我们来一个小小的hack:
void DllConfig(HWND hParent)
{
wxWindow win;
win.SetHWND((WXHWND)hParent);
win.Enable(false);
ConfigDialog dlg(&win);
dlg.ShowModal();
win.Enable(true);
win.SetHWND(NULL);
}