窗口过程--处理点击鼠标左右键的消息(带注释)
来源:互联网 发布:单片机延时1s程序 编辑:程序博客网 时间:2024/05/29 08:09
/*当鼠标左键在窗口客户区被点击时,提示“按击来自主人的食指”,当鼠标右键在窗口客户区被点击时,提示“感受到主人中指的力度”*/#include<windows.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);/*WNDCLASS 结构Windows 的窗口总是基于窗口类来创建的,窗口类同时确定了处理窗口消息的窗口过程(回调函数)。在创建应用程序窗口之前,必须调用 RegisterClass 函数来注册窗口类。该函数只需要一个参数,即指向 WNDCLASS 窗口类的指针。因为 WNDCLASS 类包含了窗口所拥有的基本属性。*/int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){static TCHAR szAppName[] = TEXT("MyWindows");HWND hwnd;MSG msg;WNDCLASS wndclass;wndclass.style = CS_HREDRAW | CS_VREDRAW;//指定窗口类型,各种“类风格”,可以使用按位或操作符组合起来//CS_VREDRAW移动或者调整窗口的高度(垂直方向)时,重绘整个窗口//CS_HREDRAW移动或者调整窗口的宽度(水平方向)时,重绘整个窗口wndclass.lpfnWndProc = WndProc;//指定窗口过程(必须是回调函数)wndclass.cbClsExtra = 0;//预留的额外空间,一般为 0wndclass.cbWndExtra = 0;//预留的额外空间,一般为 0wndclass.hInstance = hInstance;//应用程序的实例句柄wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//为所有基于该窗口类的窗口设定一个图标wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//为所有基于该窗口类的窗口设定一个鼠标指针wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//指定窗口背景色wndclass.lpszMenuName = NULL;//指定窗口菜单wndclass.lpszClassName = szAppName;//指定窗口类名if (!RegisterClass(&wndclass))//RegisterClass注册窗口类{MessageBox(NULL, TEXT("这个程序需要在Windows NT 才能执行!"), szAppName, MB_ICONERROR);return 0;}/*CreateWindow 函数创建一个重叠式窗口、弹出式窗口或子窗口。它指定窗口类,窗口标题,窗口风格,以及窗口的初始位置及大小(可选的)。函数也指该窗口的父窗口或所属窗口(如果存在的话),及窗口的菜单。若要使用除 CreateWindow 函数支持的风格外的扩展风格,则使用 CreateWindowEx 函数代替 CreateWindow 函数。*//*HWND WINAPI CreateWindow(_In_opt_ LPCTSTR lpClassName, // 窗口类名称_In_opt_ LPCTSTR lpWindowName, // 窗口标题_In_ DWORD dwStyle, // 窗口风格,或称窗口格式_In_ int x, // 初始 x 坐标_In_ int y, // 初始 y 坐标_In_ int nWidth, // 初始 x 方向尺寸_In_ int nHeight, // 初始 y 方向尺寸_In_opt_ HWND hWndParent, // 父窗口句柄_In_opt_ HMENU hMenu, // 窗口菜单句柄_In_opt_ HINSTANCE hInstance, // 程序实例句柄_In_opt_ LPVOID lpParam // 创建参数);*/hwnd = CreateWindow(szAppName,// 窗口类名称TEXT("酷酷的糖"),// 窗口标题WS_OVERLAPPEDWINDOW,// 窗口风格,或称窗口格式//WS_OVERLAPPEDWINDOW相当于(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)CW_USEDEFAULT,// 初始 x 坐标CW_USEDEFAULT,// 初始 y 坐标CW_USEDEFAULT,// 初始 x 方向尺寸CW_USEDEFAULT,// 初始 y 方向尺寸NULL,// 父窗口句柄NULL,// 窗口菜单句柄hInstance,// 程序实例句柄NULL);// 创建参数ShowWindow(hwnd, iCmdShow);//显示窗口UpdateWindow(hwnd);//更新窗口/*BOOL WINAPI GetMessage(_Out_ LPMSG lpMsg,_In_opt_ HWND hWnd,_In_ UINT wMsgFilterMin,_In_ UINT wMsgFilterMax);*/while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){HDC hdc;PAINTSTRUCT ps;RECT rect;switch (message){case WM_PAINT:hdc = BeginPaint(hwnd, &ps);GetClientRect(hwnd, &rect);DrawText(hdc, TEXT("大家好,我是xxx!"), -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint(hwnd, &ps);return 0;case WM_LBUTTONDOWN:MessageBox(NULL, TEXT("按击来自主人的食指"), TEXT("好舒服!"), MB_OK);return 0;case WM_RBUTTONDOWN:MessageBox(NULL, TEXT("感受到主人中指的力度"), TEXT("好舒服!"), MB_OK);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, message, wParam, lParam);}
0 0
- 窗口过程--处理点击鼠标左右键的消息(带注释)
- QTreeWidget区分鼠标左右键点击事件的方法
- 判断鼠标左键,右键点击
- 仿遨游的鼠标按住左键点击右键和按住右键点击左键的功能(C#源码)
- ArcGIS API for Silverlight开发中鼠标左键点击地图上的点弹出窗口及右键点击弹出快捷菜单的实现代码
- 交换鼠标的左右键
- 处理鼠标离开窗口的消息 (WM_MOUSELEAVE)
- 处理鼠标离开窗口的消息 (WM_MOUSELEAVE)
- 处理鼠标离开窗口的消息 (WM_MOUSELEAVE)
- 如何处理窗口的鼠标离开消息
- 如何处理鼠标离开窗口的消息
- 点击任务栏中的窗口,右键的消息响应设置
- MFC消息处理时,双击鼠标左键响应单击左键消息的处理
- java中鼠标判断左键点击和右键点击
- AWT/Swing中处理鼠标双击(多击)以及右键点击的事件处理办法
- 左键点击任务栏窗口(非托盘图标)产生的消息捕获
- EVC长按鼠标左键的消息处理解决办法
- QTableView区分鼠标点击事件的左键和右键以及QSortFilterProxyModel重新排序的问题
- java基础7
- Android login(post和get的使用区别)
- ruby以及sass安装、使用
- 埋点技术
- url编码的问题解决方案;转码方法不可重入,需要优雅的方案来解决,否则只能靠约定式编程。
- 窗口过程--处理点击鼠标左右键的消息(带注释)
- java JDBC数据库操作
- (POJ 3352)无向图的边双连通分量模板题 + 在一个图中最少加几条边可以使得图边双连通
- unity5 Orthographic模式相机视截体尺寸计算
- mysql 杂记(二) -- 常用SQL命令积累
- 静态成员可以是不完全类型
- java源码剖析: 对象内存布局、JVM锁以及优化
- " &< > 等html字符转义
- UVA548 中序后序构造二叉树