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

原文地址:https://www.cnblogs.com/skogkatt/p/4163293.html