0

在我的 COM 插件中,我创建了一个对话框,然后从外部进程向它发送消息。我使用HWND_BROADCASTRegisterWindowMessage

但是 COM 插件的对话过程永远不会收到这些消息。我知道这一点,因为我记录了对话过程接收到的所有消息,以及RegisterWindowMessage.

从外部过程:

static UINT nCloseMessage = 0;
if (!nCloseMessage)
    nCloseMessage = RegisterWindowMessage(_T("MyCloseMessage"));    
PostMessage(HWND_BROADCAST, nCloseMessage, 0, 0);

从 COM 加载项:

INT_PTR CALLBACK ProgressDialogProc(__in  HWND hwndDlg,__in  UINT uMsg,__in  WPARAM wParam,__in  LPARAM lParam)
{
    static UINT nCloseMessage = 0;
    if (!nCloseMessage)
        nCloseMessage = RegisterWindowMessage(_T("MyCloseMessage"));    
    if (uMsg == nCloseMessage)
        MessageBox(0,_T("Caught"),0,0);

    return FALSE;
}
4

1 回答 1

0

我找到了为什么我得到这个错误,HWND_BROADCAST当对话框有父窗口时不起作用。

传递NULLCreateDialog父级修复了错误。

于 2012-10-26T16:02:19.923 回答