Внутри моего COM-надстройки я создаю диалог и затем отправляю ему сообщения от внешнего процесса. я использую HWND_BROADCAST
а также RegisterWindowMessage
,
Но эти сообщения никогда не поступают в диалоговый процесс надстройки 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
не работает, когда диалог имеет родительское окно.
Переходя NULL
в CreateDialog
для родителя исправлена ошибка.
Других решений пока нет …