码迷,mamicode.com
首页 > 编程语言 > 详细

windows 消息循环和窗口与线程关系

时间:2016-07-01 18:25:03      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

/WinMain函数  

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
g_hinstance = hInstance;
if( !Register("Main",WndProc) ) //注册窗口类 RegisterClassEx
{
MessageBox(NULL,"注册失败","Infor",MB_OK);
return 0;
}
HWND hWnd = CreateMainWnd("Main","window"); //创建窗口CreateWindow
Display(hWnd);
Message();//消息循环 在主线程中负责处理OS发来的消息
return 0;
}
//消息循环 (消息泵)
void Message()
{
MSG nMsg ={ 0 };
while (GetMessage(&nMsg, NULL, 0, 0))
{
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);
}
}

//windows 消息处理函数
LRESULT CALLBACK WindowProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
//最后,你不愿意处理的消息交给默认消息处理函数
Return DefWindowProc( hWnd, nMsg, wParam, lParam); // 默认windows消息处理函数
}

//其中操作系统将硬件消息分发给每个窗口对应的线程的消息泵来处理
//
//如果在子线程中创建了窗口(wnd),则子线程中需要有处理消息的消息泵, 消息不会发到主线程的消息循环
//
//CreateThread(NULL,0,ThreadProcTrade,NULL,0,&threadID_Trade);

DWORD WINAPI ThreadProcTrade(LPVOID lpParam)
{
g_hinstance = hInstance;
if (!Register("Main", WndProc)) //注册窗口类 RegisterClassEx
{
MessageBox(NULL, "注册失败", "Infor", MB_OK);
return 0;
}
HWND hWnd = CreateMainWnd("Main", "window"); //创建窗口CreateWindow
Display(hWnd);
Message(); //消息循环 子线程中负责处理OS发来的本线程创建的UI的消息
return 0;
}

 

windows 消息循环和窗口与线程关系

标签:

原文地址:http://www.cnblogs.com/nk-liugang2014/p/5633869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!