测试WM_TIMER 消息 以及计时器
来源:互联网 发布:美墨边境 知乎 编辑:程序博客网 时间:2024/05/20 18:18
/*
名称 Timer
功能:每产生一个WM_TIMER消息则屏幕变换一次颜色.
目的:测试WM_TIMER 消息 以及计时器。
*/
#include <windows.h>#define ID_TIMER 1LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam);LRESULT CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT iTimerID,DWORD dwTime);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wndcls; MSG msg; HWND hwnd; TCHAR szClassName[] = TEXT("Myclass"); wndcls.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS; wndcls.lpfnWndProc = WindowProc; wndcls.cbClsExtra = 0; wndcls. cbWndExtra = 0; wndcls. hInstance = hInstance; wndcls. hIcon =LoadIcon(NULL,IDI_APPLICATION); wndcls.hCursor = LoadCursor(NULL,IDC_ARROW); wndcls. hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndcls.lpszMenuName =NULL; wndcls.lpszClassName = szClassName; RegisterClass(&wndcls); hwnd = CreateWindow(szClassName,"Timer demo ",WS_OVERLAPPEDWINDOW , CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,NULL); ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam){ switch (uMsg) { case WM_CREATE: { SetTimer(hwnd,ID_TIMER,1000,TimerProc); return 0; } case WM_DESTROY: { KillTimer(hwnd,ID_TIMER); PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd,uMsg,wParam,lParam);}LRESULT CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT iTimerID,DWORD dwTime){ HDC hdc; PAINTSTRUCT pt; HBRUSH hBrush; RECT rect; static BOOL IsPaint = FALSE; //static 作用?如果没有它,该城市将得不到想要的效果 MessageBeep (-1) ; IsPaint = !IsPaint; hdc = GetDC(hwnd); GetClientRect(hwnd,&rect); hBrush = CreateSolidBrush(IsPaint ? RGB(255,0,0) : RGB(0,0,255)); //注意 FillRect(hdc,&rect,hBrush); ReleaseDC(hwnd,hdc); DeleteObject(hBrush);}
/*
1.windows 直接将WM_TIMER 消息发送到 TimerProc函数去处理,
像其他窗口过程一样刺函数也必须定义成CALLBACK,因为他是window本
身要呼叫的,
2.CALLBACK 函数的参数和返回值取决于CALLBACK函数的目的。
WM_TIMER函数的参数和WindowProc的参数相同,WM_TIMER不需要返
回值。
3.当您使用 CALLBACK 函数 处理WM_TIMER消息时呼叫
SetTimer(hwnd,ID_TIMER,1000,TimerProc); 注意最后一个参数!
在这以后所有WM_TIMER消息都会发送给TimerProc函数.
4.static 的用法? 本程序如果修改该参数,则得不到该有的效果。
2012.07.20 21:13:50
*/
- 测试WM_TIMER 消息 以及计时器
- Win32 计时器消息 - WM_TIMER,SetTimer
- Win32 计时器消息 - WM_TIMER,SetTimer
- WM_TIMER消息莫名失踪
- WM_TIMER消息的使用方法
- Windows WM_TIMER消息
- WM_TIMER 消息的问题
- WM_TIMER消息映射(转)
- WM_TIMER
- WM_TIMER
- SetTimer定时器与WM_TIMER窗口消息详解
- SetTimer定时器与WM_TIMER窗口消息详解
- OPenGL程序导致WM_TIMER消息不能激发
- VC中定时器的使用(SETTIMER,KILLTIMER,WM_TIMER消息)
- WM_TIMER消息在线程被阻塞时的系统处理
- 计时器动画测试
- Python效率测试计时器()
- 孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息
- 使用WebView实现新浪微博Oauth2.0认证(android)
- 团队需要的六种人
- 播放器只有图像没有声音的解决方案
- 銀時が2億ユーロ2万ユーロ振替コスト裁定帰人れ
- 多线程
- 测试WM_TIMER 消息 以及计时器
- Ubuntu 12.04 软件管理
- 湖南科技大学OJ Ignatius and the Princess I 加强
- 关于hibernate查询
- 多线程_线程范围内数据共享
- 多线程_普通锁和读写锁
- 多线程_线程池的几种类型
- 我的移植经验之谈,简单的Rom移植教程——附移植JoyOS实例
- rhel/linux下如何找出网卡驱动的内核模块名称