c++控制台(非窗口,非MFC框架)里线程如何通过自定义消息通信
2015-03-13 18:54
381 查看
MFC只是封装了API 可以参考下使用WIN32 API编写窗口实例程序。 http://blog.csdn.net/bluesky_03/article/details/3423738 里面有消息传递的用法
追问
这种也是基于窗口的情况下,那么基于控制台的情况下呢,
回答
比如 #include <windows.h> extern "C" { WINBASEAPI HWND WINAPI GetConsoleWindow(); } void main(void) { HWND hWnd = GetConsoleWindow(); PostMessage(hWnd, WM_CLOSE, NULL, NULL); } 即可向控制台发送关闭消息
追问
呵呵呵,这个我明白的,我的意思是,在不基于窗体的情况下,能否自定义消息,
回答
可以 #include "stdio.h" #include "stdlib.h" #include <windows.h> #define WM_MYMSG WM_USER+100 extern "C" { WINBASEAPI HWND WINAPI GetConsoleWindow(); } DWORD WINAPI func2(LPVOID LpParameter) { DWORD id = *(int*)LpParameter; while(1) { PostThreadMessage(id, WM_MYMSG, 0, 0); Sleep(1000); } return 0; } DWORD WINAPI func1(LPVOID LpParameter) { MSG msg; HWND hwnd = GetConsoleWindow(); while(1) { GetMessage(&msg, NULL, 0, 0); if (msg.message == WM_MYMSG) { printf("Recv WM_MYMSG\n"); } Sleep(1000); } return 0; } void main(void) { DWORD id; HANDLE hthrd1 = CreateThread(NULL, 0, func1, NULL, 0, &id); HANDLE hthrd2 = CreateThread(NULL, 0, func2, &id, 0, 0); while(1) { Sleep(1000); } } 运行后控制台不停打印 Recv WM_MYMSG Recv WM_MYMSG Recv WM_MYMSG Recv WM_MYMSG
相关文章推荐
- 通过小练习掌握MFC知识点之起步篇-父子窗口间传值、ListCtrl隔行变色、双缓冲技术解决控件闪烁、自定义消息等
- Windows消息:如何自定义窗口消息与线程消息
- Windows消息:如何自定义窗口消息与线程消息
- MFC自定义控件如何向父窗口发送自定义消息
- 如何在mfc中通过线程向主窗口发送数据或者是访问控件
- MFC如何自定义消息与在线程中向主窗体控件发送数据
- 不知道在MFC中如何从线程工作函数中向窗口发送消息?用好一个指针就够了
- 如何处理窗口叠加时的自定义消息路由
- MFC 文档 视图 框架窗口间的关系 和消息传送规律
- 如何在MFC中自定义消息
- MFC中在工作线程下画图(自定义消息的发送)
- MFC中在工作线程下画图(自定义消息的发送)
- VC 2010 + MFC + MDI多文档视图框架:视图框架窗口激活的消息通知
- 如何通过想窗口控件发消息模拟点击按键
- c#如何在线程中通过传递消息更新界面
- 【转】MFC 如何添加自定义消息及其响应函数
- 在MFC框架中添加自定义消息的几个步骤
- 学习一下如何自定义Windows MFC消息
- 在VC++项目中为MDI主框架窗口添加位图(通过截获MDICLIENT的WM_PAINT消息)
- 自定义消息实现线程间通信