我发的消息是这样的: if (IsWindow( AfxGetApp()->m_pMainWnd->GetSafeHwnd() )) AfxGetApp()->m_pMainWnd->SendMessageToDescendants(MSGTD_MYMESSAGE, (WPARAM)(pInfo), (LPARAM)(pInfo) ); 有人帮忙吗?
你的消息是发给了m_pMainWnd吧???应该发给你浮动窗口啊
SendMessageToDescendants发送消息方式,MSDN中这么说的:Call this member function to send the specified Windows message to all descendant windows. 我在CDockablePane上重载的Dialog里面有相应函数ON_MESSAGE( MSGTD_MYMESSAGE, &CDialog::OnMyMethod ),奇怪的是OnMyMethod()在窗口没有浮动的时候能够响应,浮动的时候就没有相应了。
ON_MESSAGE( MSGTD_MYMESSAGE, &CDialog::OnMyMethod ) 很奇怪的消息映射, ON_MESSAGE( MSGTD_MYMESSAGE, OnMyMethod)就行了 MSDN上的解释说: If bDeep and bOnlyPerm are TRUE, the search continues below temporary windows. In this case, only permanent windows encountered during the search receive the message. 改为 AfxGetApp()->m_pMainWnd->SendMessageToDescendants(MSGTD_MYMESSAGE, (WPARAM)(pInfo), (LPARAM)(pInfo), TRUE, FALSE ); 最后一个参数为TRUE,只发给固定窗口,FALSE,全部都通知
if (IsWindow( AfxGetApp()->m_pMainWnd->GetSafeHwnd() ))
AfxGetApp()->m_pMainWnd->SendMessageToDescendants(MSGTD_MYMESSAGE, (WPARAM)(pInfo), (LPARAM)(pInfo) );
有人帮忙吗?
我在CDockablePane上重载的Dialog里面有相应函数ON_MESSAGE( MSGTD_MYMESSAGE, &CDialog::OnMyMethod ),奇怪的是OnMyMethod()在窗口没有浮动的时候能够响应,浮动的时候就没有相应了。
很奇怪的消息映射,
ON_MESSAGE( MSGTD_MYMESSAGE, OnMyMethod)就行了
MSDN上的解释说:
If bDeep and bOnlyPerm are TRUE, the search continues below temporary windows. In this case, only permanent windows encountered during the search receive the message.
改为
AfxGetApp()->m_pMainWnd->SendMessageToDescendants(MSGTD_MYMESSAGE, (WPARAM)(pInfo), (LPARAM)(pInfo), TRUE, FALSE );
最后一个参数为TRUE,只发给固定窗口,FALSE,全部都通知
AfxGetApp()->m_pMainWnd->SendMessageToDescendants(MSGTD_MYMESSAGE, (WPARAM)(pInfo), (LPARAM)(pInfo), TRUE, FALSE );
接受消息的地方也改成了:
ON_MESSAGE( MSGTD_MYMESSAGE, OnMyMethod)
还是原来的样子,浮动就不能接收到消息了,真是急死了