问题描述
我有一个原始的MFC应用程序,最初是用Visual C ++ 6编写的。我需要对其进行一些小的更改,但是MFC对我来说是一个黑匣子。
LRESULT CMainFrame::WindowProc(UINT message,WParaM wParam,LParaM lParam)
{
// Todo: Add your specialized code here and/or call the base class
switch (message)
{
case WM_CLOSE:
...;
...
etc.
}
对于某些消息,我需要获取发件人窗口句柄(来自不同的进程)。在Windows API中,标准的WindowProc将此句柄作为第一个参数,但是在MFC中它在哪里?
编辑:谢谢雷蒙德和马克。我发现我误解了它的工作原理。
解决方法
此信息不可用。标准窗口过程中的第一个参数是 receiver ,而不是发送方。这也很有意义,因为SendMessage
和PostMessage
通过窗口句柄来标识接收者。另一方面,发件人可以是任何线程,包括不拥有任何窗口的线程。
如果您需要在接收消息的代码中标识消息的发送者,则必须显式传递ID。当跨越过程边界时,您将必须封送任何引用的内存。系统不会对自定义消息执行此操作。