PeekMessage和GetMessage区别
在Windows的内部,两个函数执行着相同的代码。
具体情况具体分析,无法说明到底哪一个更好一些,这要根据实际的应用情况而定
volatile int quit = false;
std::thread t([&]() {
OnTask(2000);
quit = true;//两种退出消息循环的方法
::PostMessage(this->m_hWnd,WM_CJ, 0, 0); });
t.detach();
MSG msg;
while (!quit && GetMessage(&msg, nullptr, 0, 0))
{
if (msg.message == WM_LBUTTONDOWN)
{
//continue; 作为一个插件dll,你应该禁止用户对界面再进行任何操作,用户引起的绝大部分windows消息都要过滤掉
// 考虑一下,如果你先后点击按钮两次,那么进度条现象是古怪的,因为两个线程同时修改progress的pos
// 我这里不过滤,是为了演示后台线程对主线程的界面操作不会造成影响
}
if (msg.message == WM_CJ)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
MessageBox(L"退出循环", L"...", MB_SYSTEMMODAL);
互斥锁
共享内存
#pragma data_seg