【发布时间】:2012-05-02 13:54:06
【问题描述】:
我看到这个问了很多方法,但从未见过实际工作的代码片段。
毫无疑问,我尝试了这种天真的尝试来创建一个带有新窗口和消息循环的新线程。我有一个必须打开一个窗口并处理其消息的函数,并且必须在可以从没有现有消息循环(也没有其他窗口)或通常的 mfc 消息循环或 WTL 消息循环的应用程序调用的环境中运行。我看到了一些关于 AddMessageLoop 和 Modules 的东西?但它似乎是针对主要应用程序的。无论如何,那里可能有也可能没有 WTL 模块。需要一个带有基本消息循环的独立窗口。传入一个窗口尚未打开的 WTL 类,因此窗口在与循环相同的线程中打开。类对象是否也必须在新线程中创建?
// does not work....
static DWORD WINAPI MyRunThread(__in LPVOID lpParameter)
{
CMessageLoop theLoop;
WTLsubclass *nav = (WTLsubclass *) lpParameter;
nav->CreateWindow();
int nRet = theLoop.Run();
return nRet;
}
CreateThread(0,0,MyRunThread,&nav,0,0);
【问题讨论】:
-
如果它可以从没有窗口的应用程序中调用,您可能无法使用 Window 类参数创建它。
-
那么你的这个代码sn-p,有用吗?对我来说看起来不错 - 您启动一个线程,在那里创建窗口并不断发送消息。
标签: c++ windows multithreading wtl