c++控制台(非窗口,非MFC框架)里线程如何通过自定义消息通信
来源:互联网 发布:淘宝设置发货地 编辑:程序博客网 时间:2024/05/22 17:45
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_MYMSGWM_USER+100extern "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_MYMSGRecv WM_MYMSGRecv WM_MYMSGRecv WM_MYMSG
0 0
- c++控制台(非窗口,非MFC框架)里线程如何通过自定义消息通信
- 非窗口消息
- 非窗口消息
- TRACE宏(只在MFC的DEBUG中有效)|VC++非MFC项目中如何自定义TRACE宏|头文件的重复编译|DEBUGVIEW窗口
- 实现真正的非全屏窗口和自定义消息对话框
- Windows消息:如何自定义窗口消息与线程消息
- Windows消息:如何自定义窗口消息与线程消息
- MFC自定义消息通信
- 非窗口消息传递路由
- 如何在MFC里写自己的自定义消息
- 如何在MFC里写自己的自定义消息
- MFC--非模式对话框程序(mfc框架)
- MFC如何自定义消息
- C++:在非MFC程序中如何引用CString?
- 基于MFC的socket编程(异步非阻塞通信)
- 基于MFC的socket编程(异步非阻塞通信)
- 基于MFC的socket编程(异步非阻塞通信)
- C#——基于委托与事件的多线程通信(同样适用于非UI线程间通信)
- 在win7下优盘安装ubuntu组成双系统,多图。。。
- Linux学习笔记(3-13)共享文件夹
- Use UIGestureRecognizer to handle single tap and double tap
- Spring配置文件详解 - applicationContext.xml文件路径
- mininet的中文教程学习
- c++控制台(非窗口,非MFC框架)里线程如何通过自定义消息通信
- POJ 3258 River Hopscotch
- DLL 中 DEF 文件的使用
- [LeetCode] 035. Search Insert Position (Medium) (C++)
- 2015/3/13这周总结
- 十六进制---十进制转换
- abc
- mysql的数据类型int、bigint、smallint 和 tinyint取值范围
- 01-1. 最大子列和问题