1

我正在将 MFC 应用程序移植到 Win32 应用程序,我需要得到

AfxGetThreadState()->m_lastSentMsg

Win32 中的值。

4

1 回答 1

3

好吧,MFC 所做的只是记录它在课堂上收到的最后一条消息。我相信你可以在你的线程消息泵中添加这样的东西......

编辑:还值得一看 __declspec(thread) 在线程本地存储中定义“全局”。这就是 MFC 所做的...

编辑:您将有一个消息泵。如果您首先声明一个类似于以下内容的变量:

__declspec( thread ) MSG g_LastMsg = 0;

然后您需要将每个线程中的消息泵更改为如下所示:

MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
            g_LastMsg = msg;
    TranslateMessage( &msg );
    DispatchMessage( &msg );
}

现在,任何时候您想查看最后一条“泵送”的消息是什么,只需检查 g_LastMsg 变量...

如果您愿意,也可以从您的 Window 过程中构建消息结构。完全取决于你...

于 2009-12-09T09:51:36.300 回答