用消息在Win32控制台程序多线程间进行通讯
2009-11-06 16:06
218 查看
#include <stdio.h> #include <windows.h> //#include <iostream> //#include <process.h> #define UM_MSG1 (WM_USER + 1) #define UM_MSG2 (WM_USER + 2) DWORD WINAPI Thread1(LPVOID para) { DWORD dwThreadId = *(DWORD *)para; DWORD i = 0; TCHAR *p; char strTmp[100]; while(TRUE) { Sleep(1700); p = new TCHAR[10]; sprintf_s(strTmp, 100, "Hello %d %x ", i++, p); PostThreadMessage(dwThreadId, UM_MSG1, (WPARAM)strTmp, (LPARAM)p); //delete []p; } return 0; } DWORD WINAPI Thread2(LPVOID para) { char strTmp[100]; DWORD dwThreadId = *(DWORD *)para; DWORD i = 0; TCHAR *p; while(TRUE) { Sleep(3000); p=new TCHAR[10]; sprintf_s(strTmp, 100, "World %d %x", i++, p); PostThreadMessage(dwThreadId, UM_MSG2, (WPARAM)strTmp, (LPARAM)p); //delete []p; } return 0; } int main() { printf("UM_MSG1: 0x%x/r/n", UM_MSG1); printf("UM_MSG2: 0x%x/r/n", UM_MSG2); DWORD dwValue = GetCurrentThreadId(); HANDLE hThread1 = CreateThread(NULL, 0, &Thread1, &dwValue, 0, NULL); // &Thread1可写作Thread1, 都是函数指针. HANDLE hThread2 = CreateThread(NULL, 0, &Thread2, &dwValue, 0, NULL); CloseHandle(hThread1); CloseHandle(hThread2); MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { switch(msg.message) { case UM_MSG1: case UM_MSG2: printf("msg: 0x%x w: %x ws: %s l: %x/r/n", msg.message, &msg.wParam, msg.wParam, msg.lParam); delete [](TCHAR *)msg.lParam; //注释掉这句你就会看到堆内存地址变化 break; default: printf("Unknown msg:0x%x/n",msg.message); break; } Sleep(1); } return 0; }
// 代码由"zyq5945"在http://topic.csdn.net/u/20091106/10/882619b7-094a-45dc-ba1e-2f0888d15650.html中提供.
相关文章推荐
- 用消息在Win32控制台程序多线程间进行通讯
- Win32控制台程序,ListBox控件响应鼠标单击及双击消息
- win32控制台程序使用CfileDialog进行文件读取
- 计算一段程序进行的时间、 控制台下用Win32 API打开文件对话框
- Win32控制台程序标准的OpenGL流程
- Sublime Text 3 配置java程序运行环境(可进行控制台输入)(转)
- tc编译的dos程序和vc编译的win32控制台程序的区别
- 在MFC,Win32程序中向控制台(Console)窗口输出调试信息
- 未能使用提供程序“RsaProtectedConfigurationProvider”进行解密。提供程序返回错误消息为: 打不开 RSA 密钥容器
- tc编译的dos程序和vc编译的win32控制台程序的异同
- 解决 win32控制台程序一闪而过
- 【Visual C++ 2010】如何快速将Win32程序改为控制台程序
- win32程序启用控制台(控制台文件名:conout$,conin$,conerr$)
- 用win32控制台写C++程序,程序运行完成马上就消失
- 3种下载文件程序的思考,为何使用NIO进行异步网络通讯
- win32控制台程序隐藏dos黑框
- Win32 API 多线程编程——一个简单实例(含消息参数传递)
- 在Win32控制台程序中使用定时器
- Win32控制台程序和Win32应用程序
- 使用AllocConsole在Win32程序中调用控制台调试输出