资源描述:
《Windows编程之鼠标滑轮.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Windows编程之鼠标滑轮与传统的鼠标相比,MicrosoftIntelliMouse的特点是在两个键之间多了一个小滑轮。您可以按下这个滑轮,这时它的功能相当于鼠标按键的中键;或者您也可以用食指来转动它,这会产生一条特殊的消息,叫做WM_MOUSEWHEEL。使用鼠标滑轮的程序通过滚动或放大文件来响应此消息。它最初听起来像一个不必要的隐藏机关,但我必须承认,我很快就习惯于使用鼠标滑轮来滚动MicrosoftWord和MicrosoftInternetExplorer了。我不想讨论鼠标滑轮的所有使用方法。实际上,我只是想告诉您如何在现有的程序(例如程序S
2、YSMETS4)中添加鼠标滑轮处理程序,以便在显示区域中卷动数据。最终的SYSMETS程序如程序7-8所示。程序7-8SYSMETS4SYSMETS.C/*----------------------------------------------------------------------------SYSMETS.C--FinalSystemMetricsDisplayProgram(c)CharlesPetzold,1998-------------------------------------------------------------
3、---------------*/#include#include"sysmets.h"LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){staticTCHARszAppName[]=TEXT("SysMets");HWNDhwnd;MSGmsg;WNDCLASSwndclass;wndclass.style=CS_H
4、REDRAW
5、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);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lp
6、szMenuName=NULL;wndclass.lpszClassName=szAppName;if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT("ProgramrequiresWindowsNT!"),szAppName,MB_ICONERROR);return0;}hwnd=CreateWindow(szAppName,TEXT("GetSystemMetrics"),WS_OVERLAPPEDWINDOW
7、WS_VSCROLL
8、WS_HSCROLL,CW_USEDEFAULT,CW_USEDEF
9、AULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}returnmsg.wParam;}LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){staticin
10、tcxChar,cxCaps,cyChar,cxClient,cyClient,iMaxWidth;staticintiDeltaPerLine,iAccumDelta;//formousewheellogicHDChdc;inti,x,y,iVertPos,iHorzPos,iPaintBeg,iPaintEnd;PAINTSTRUCTps;SCROLLINFOsi;TCHARszBuffer[10];TEXTMETRICtm;ULONGulScrollLines;//formousewheellogicswitch(message){caseWM_C
11、REATE:hdc=GetDC(hwnd);GetTextMetrics(hdc