第四讲:鼠标

上传人:飞****9 文档编号:145069047 上传时间:2020-09-16 格式:DOCX 页数:26 大小:73.83KB
返回 下载 相关 举报
第四讲:鼠标_第1页
第1页 / 共26页
第四讲:鼠标_第2页
第2页 / 共26页
第四讲:鼠标_第3页
第3页 / 共26页
第四讲:鼠标_第4页
第4页 / 共26页
第四讲:鼠标_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《第四讲:鼠标》由会员分享,可在线阅读,更多相关《第四讲:鼠标(26页珍藏版)》请在金锄头文库上搜索。

1、.第四讲:鼠标只要鼠标跨越窗口,或者在某窗口中按下鼠标按钮,那么窗口过程函数就会收到鼠标消息,而不管该窗口是否为活动窗口和是否拥有输入焦点窗口。鼠标消息:WM_LBUTTONDOWNWM_MBUTTONDOWNWM_RBUTTONDOWNWM_LBUTTONUPWM_RBUTTONUPWM_MBUTTONUPWM_LBUTTONDBLCLKWM_MBUTTONDBLCLKWM_RBUTTONDBLCLK1. lParam 是相对于客户区左上角的坐标,其中X 坐标 :LOWORD(lParam)Y 坐标 :HIWORD(lParam)2. wParam 是 Shift 键和 Ctrl 键或鼠标按

2、钮的状态,若wParam & MK_SHIFT0wParam & MK_CONTROL0wParam & MK_LBUTTON0wParam & MK_MBUTTON0wParam & MK_RBUTTON0WM_MOUSEMOVE表示在产生相应的鼠标消息时,也按下了鼠标双击消息Shift 键和 Ctrl 键或鼠标按钮。如果希望窗口过程函数能接受鼠标双击消息, 那么在注册窗口类时, 窗口风格应为: wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;重点:鼠标消息:WM_LBUTTONDOWNWM _MBUTTONDOWNWM_RBUT

3、TONDOWNWM_LBUTTONUPWM_RBUTTONUPWM_MBUTTONUPWM_LBUTTONDBLCLKWM_MBUTTONDBLCLKWM_RBUTTONDBLCLKWM_MOUSEMOVE子窗口风格: WS_CHILDWINDOW | WS_VISIBLE取程序实例句柄: (HINSTANCE)GetWindowLong (hwnd, GWL_HINSTANCE);函数 MoveWindow (hwndChildxy, x * cxBlock, y * cyBlock, cxBlock, cyBlock, TRUE) ; 移动窗口和改变窗口大小尺寸,产生 WM_SIZE 消息

4、。存取预留在窗口额外字节的函数:SetWindowLong (hwnd, 0, 0) ;GetWindowLong (hwnd, 0,0);.设置窗口捕获鼠标函数:SetCapture(hwnd) ;一旦窗口 hwnd被设置了捕获鼠标,不管鼠标光标是否在窗口 hwnd的边界之内,窗口 hwnd都接受鼠标输入。释放窗口捕获鼠标函数:ReleaseCapture();WM_MOUSEMOVE 消息:每当鼠标移动时,窗口接收 WM_MOUSEMOVE 消息,系统此时自动把鼠标光标形状切换到在窗口类中定义的鼠标光标形状,如wndclass.hCursor = LoadCursor (NULL, IDC

5、_ARROW) ;/*-CONNECT.C - Connect-the-Dots Mouse Demo Program(c) Charles Petzold, 1998-*/#include #define MAXPOINTS 1000LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)static TCHAR szAppName = TEXT (C

6、onnect) ;HWNDhwnd ;MSGmsg ;WNDCLASSwndclass ;wndclass.style= CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc= WndProc ;wndclass.cbClsExtra= 0 ;wndclass.cbWndExtra= 0 ;wndclass.hInstance= hInstance ;wndclass.hIcon= LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor= LoadCursor (NULL, IDC_ARROW) ;wndcla

7、ss.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 (Connect-the-Poin

8、ts 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 ;LRESULTCALLBACKWndProc(

9、HWNDhwnd,UINTmessage, WPARAMwParam,LPARAM lParam)static POINT ptMAXPOINTS ;static intiCount ;HDChdc ;inti, j ;PAINTSTRUCTps ;switch (message)case WM_LBUTTONDOWN:iCount = 0 ;InvalidateRect (hwnd, NULL, TRUE) ;return 0 ;case WM_MOUSEMOVE:if (wParam & MK_LBUTTON & iCount 1000)ptiCount.x = LOWORD (lPara

10、m) ;ptiCount+.y = HIWORD (lParam) ;.hdc = GetDC (hwnd) ;/SetPixel (hdc, LOWORD (lParam), HIWORD (lParam), 0) ; SetPixel (hdc, LOWORD (lParam), HIWORD (lParam), RGB(255,0,0) ;ReleaseDC (hwnd, hdc) ;return 0 ;case WM_LBUTTONUP:InvalidateRect (hwnd, NULL, FALSE) ;return 0 ;case WM_PAINT:hdc = BeginPain

11、t (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, pti.x, pti.y, NULL) ;LineTo(hdc, ptj.x, ptj.y) ;ShowCursor (FALSE) ;SetCursor (LoadCursor (NULL, IDC_ARROW) ;EndPaint (hwnd, &ps) ;return 0 ;case WM_

12、DESTROY:PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;/*-CHECKER1.C - Mouse Hit-Test Demo Program No. 1(c) Charles Petzold, 1998-*/#include .#define DIVISIONS 5LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTRszCmdLine, int iCmdShow)static TCHAR szAppName = TEXT (Checker1) ;HWNDhwnd ;MSGmsg ;WNDCLASSwndclass ;wndclass.style= CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc= WndProc ;wndclass.cbClsExtra= 0 ;wndc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号