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

Advertisements

About HyperIris

Wild Scientist
此条目发表在编程艺术分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s