鼠标消息
来源:互联网 发布:xlplayer mac有杂音 编辑:程序博客网 时间:2024/05/06 00:42
对于所有的鼠标消息,其lParam值均含有鼠标位置:低字组为x坐标,高字组为y坐标,这两个坐标是相对于窗口显示区域左上角的位置。可以用LOWORD和HIWORD宏来提取这些值:
x = LOWORD(lParam);
y = HIWORD(lParam);
wParam值指示鼠标按键以及Shift和Ctrl键的状态。可以用WINUSER.H中定义的位屏蔽来测试wParam。例如:
收到了WM_LBUTTONDOWN的消息,而且值 wParam &MK_SHIFT是TRUE,就知道当左键按下时也按下了Shift键。
#include <windows.h>#define MAXPOINTS 1000LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow){static TCHAR szAppName[] = TEXT("Connect");HWND hwnd;MSG msg;WNDCLASS wndclass;wndclass.style = CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc = WndProc;wndclass.cbClsExtra = 0;wndclass.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)){MessageBox(NULL, TEXT("Program requires Windows NT!"), szAppName, MB_ICONERROR);return 0;}hwnd = CreateWindow(szAppName, TEXT("Context-the-Points Mouse Demo"),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, hInstance, NULL);ShowWindow(hwnd, iCmdShow);UpdateWindow(hwnd);while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){static POINT pt[MAXPOINTS];static int iCount;HDC hdc;int i, j;PAINTSTRUCT ps;switch (message){case WM_LBUTTONDOWN:iCount = 0;InvalidateRect(hwnd, NULL, TRUE);return 0;case WM_MOUSEMOVE:if (wParam & MK_LBUTTON && iCount < MAXPOINTS){pt[iCount].x = LOWORD(lParam);pt[iCount++].y = HIWORD(lParam);hdc = GetDC(hwnd);SetPixel(hdc, LOWORD(lParam), HIWORD(lParam), 0);ReleaseDC(hwnd, hdc);}return 0;case WM_LBUTTONUP:InvalidateRect(hwnd, NULL, FALSE);return 0;case WM_PAINT:hdc = BeginPaint(hwnd, &ps);SetCursor(LoadCursor(NULL, IDC_WAIT));ShowCursor(TRUE);for (i = 0; i < iCount - 1; ++i){for (j = i + 1; j < iCount; ++j){MoveToEx(hdc, pt[i].x, pt[i].y, NULL);LineTo(hdc, pt[j].x, pt[j].y);}}ShowCursor(FALSE);SetCursor(LoadCursor(NULL, IDC_ARROW));EndPaint(hwnd, &ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, message, wParam, lParam);}
- 鼠标消息
- 鼠标消息
- 鼠标消息
- 鼠标消息
- 鼠标消息与键盘消息
- 鼠标消息与键盘消息
- MFC2.鼠标消息
- windows鼠标消息
- 鼠标输入消息
- Win32窗口鼠标消息
- 鼠标悬浮显示消息
- windows鼠标消息
- windows主要鼠标消息
- windows主要鼠标消息
- 模拟鼠标单击消息
- 鼠标消息处理
- MFC鼠标离开消息
- VC 鼠标消息WM_SETCURSOR
- Eclipse 查看源代码
- Java内存分配原理
- 黑马程序员_.NET学习11(书第四章)
- Linux里设置环境变量的方法(export PATH)
- PHP手册-__NAMESPACE__关键字(命名空间中继承其他命名空间中类注意)
- 鼠标消息
- wamp——利用phpmyadmin修改数据库密码
- Linux tail 命令详解
- declare-styleable的使用
- 如何区分引用类型和原始类型
- android 线程更新view及数据传送
- 浏览获得文件夹路径
- 黑马程序员_.NET学习9(第六章)
- 电商大佬开放平台争抢供应商:服务能力成关键