Windows控制台程序的消息队列使用笔记
来源:互联网 发布:vue.js 侧边栏导航 编辑:程序博客网 时间:2024/06/01 16:14
下面是本人学习时写的demo程序,主要是实现一个控制台程序的定时器,做好封装并在相应位置加上回调函数就能用在项目里面了
百度文库有一篇文章写得灰常好,看一遍就大致明白怎么使用消息队列了 http://wenku.baidu.com/view/12955aaddd3383c4bb4cd2fe.html
#include <assert.h>#include <iostream>#include <stdio.h>#include <windows.h>using namespace std;DWORD threadID = 0;DWORD WINAPI MyTimer(void* ptr){threadID = GetCurrentThreadId();UINT uTimerID = 1;MSG msg;uTimerID = SetTimer(NULL, uTimerID, 5000, NULL);while (GetMessage(&msg, (HWND)NULL, 0, 0)){TranslateMessage(&msg);switch (msg.message) {case WM_TIMER:{printf("WM_TIMER(0x%x) comes. TimerID = %d.\n", msg.message, msg.wParam);break;}default:{printf("0x%x comes.\n", msg.message);break;}}}printf("jump out of while loop.\n"); http://assert(msg.message==WM_QUIT);KillTimer(NULL, uTimerID);return 0;}int main (int argc, char** argv){HANDLE threadHandle = CreateThread(NULL, 0, MyTimer, NULL, 0, NULL);while (true) {Sleep(20000);PostThreadMessage(threadID, WM_QUIT, NULL, NULL);break;}WaitForSingleObject(threadHandle, INFINITE);system("PAUSE");return 0;}
这里是从本人项目中摘录的定时器代码,注释掉无关代码就可以拿去使用了
PS:
1.只要拿到线程id,跨进程也是可以发送消息的
2.线程和进程一样都有TerminateProcess/TerminateThread的方法 和 GetExitCodeProcess/GetExitCodeThread方法(0正常,非0异常)
- Windows控制台程序的消息队列使用笔记
- Windows消息队列MQ的使用
- 捕获控制台程序的消息
- ActiveMQ消息队列的使用学习笔记
- Windows消息队列学习笔记
- windows控制台程序使用TIMER
- Windows平台下的ActiveMQ消息队列的简单使用
- Linux的消息队列,Windows的邮件槽,使用有感
- 消息队列的使用
- 消息队列的使用
- 消息队列的使用
- 消息队列-ActiveMQ的使用(Windows系统)
- Windows消息队列的注意
- 消息队列的小程序
- Windows的消息队列与消息循环
- windows的消息队列与消息循环
- Windows的消息队列与消息循环
- Windows的消息队列与消息循环
- linux下进制转换的shell脚本
- android获取/更改gps和WIFI状态
- Oracle数据库定时备份导出
- Linux语言和字体的自定义设置
- 【android】解决android SDK 模拟器 运行缓慢
- Windows控制台程序的消息队列使用笔记
- 分享多年来收集的实用Android资源
- linux 系统安全设置
- bjam编译手扎
- move chunk failed
- Chrome快捷键
- GNU-ARM程序开发(一)----GNU开发环境和工具
- Web 资源 路径
- c++拷贝构造函数参数为什么只能是引用