MS Word插件无法在XP中接收消息

问题描述:

从我的COM插件中创建一个对话框,然后从外部进程向它发送消息。我使用HWND_BROADCASTRegisterWindowMessageMS Word插件无法在XP中接收消息

但是这些消息永远不会被COM插件的对话框过程接收到。我知道这一点,因为我记录了对话框proc收到的所有消息,以及由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; 
} 

我发现为什么我得到这个错误,HWND_BROADCAST不会当对话框有一个父窗口工作。

通过NULLCreateDialog为父母修复错误。