篆体字作品 | 篆体字知识 | 加入收藏 篆体字转换器软件可转换多种篆体字在线预览 网页版 V2.0
篆体字转换器

当前位置:篆体字网 > 知识库 >

postmessage

时间:2023-12-29 18:14:37 编辑:篆字君 来源:篆体字网

View Row Code

1#include2#include3#include4#define MY_MSG WM_USER+100 5const int MAX_INFO_SIZE = 20; 6HANDLE hStartEvent; // thread start event 7// thread function 8unsigned __stdcall fun(void *param) 9{ 10printf("thread fun start 111213"); 14MSG msg; 15PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); 16if(!SetEvent(hStartEvent)) //set thread start event 17{ 18printf("set start event failed,errno:%d",::GetLastError()); 19return 1; 20} 2122while(true) 23{ 24if(GetMessage(&msg,0,0,0)) //get msg from message queue 25{ 26switch(msg.message) 27{ 28case MY_MSG: 29char * pInfo = (char *)msg.wParam; 30printf("recv %s",pInfo); 31delete[] pInfo; 32break; 33} 34} 35}; 36return 0; 37} 38int main() 39{ 40HANDLE hThread; 41unsigned nThreadID; 42hStartEvent = ::CreateEvent(0,FALSE,FALSE,0); //create thread start event 43if(hStartEvent == 0) 44{ 45printf("create start event failed,errno:%d",::GetLastError()); 46return 1; 47} 48//start thread 49hThread = (HANDLE)_beginthreadex( NULL, 0, &fun, NULL, 0, &nThreadID ); 50if(hThread == 0) 51{ 52printf("start thread failed,errno:%d",::GetLastError()); 53CloseHandle(hStartEvent); 54return 1; 55} 56//wait thread start event to avoid PostThreadMessage return errno:1444 57::WaitForSingleObject(hStartEvent,INFINITE); 58CloseHandle(hStartEvent); 59int count = 0; 60while(true) 61{ 62char* pInfo = new char[MAX_INFO_SIZE]; //create dynamic msg 63sprintf(pInfo,"msg_%d",++count); 64if(!PostThreadMessage(nThreadID,MY_MSG,(WPARAM)pInfo,0))//post thread msg 65{ 66printf("post message failed,errno:%d",::GetLastError()); 67delete[] pInfo; 68} 69::Sleep(1000); 70} 71CloseHandle(hThread); 72return 0; 73}

Copyright:2021-2023 篆体字转换器 www.dddtedu.com All rights reserved.