237上位机VC MFC不同窗口鼠标的设置与还原
237上位机VC MFC不同窗口鼠标的设置与还原 功能展示 有时我们开发的程序想实现不同的窗口具有不同的鼠标样式,我们就得设置不同窗口的鼠标样式,当前例程实现不同窗口鼠标的设置,效果如图,例程运行时初始化从根目录加载了鼠标文件设置了窗口的鼠标,用户还可以点击按钮进行鼠标的设置与还原; 要点提示 1.窗口鼠标的设置可以用函数SetCursor(); 函数原型:HCURSORSetCursor(HCURSOR hCursor); hCursor:光标的句柄,可以由CreateCursor, LoadCursorFromFile, LoadCursor等函数载入; 2.窗口鼠标的还原可以通过函数GetCursorInfo()实现,此函数得在未设置窗口鼠标前调用才能正确保存窗口原始鼠标样式;函数原型为BOOL GetCursorInfo( PCURSORINFO pci);该函数检索有关的全局鼠标的信息。 函数参数是一个指向接收信息的CURSORINFO结构。在调用这个函数之前必须设置CURSORINFO.cbSize为sizeof(CURSORINFO); 3.此函数使用前应该保证WINVER 大于等于0x0500,用vc6.0编译器时就在头文件stdafx.h添加语句段#define WINVER 0x0500 实现功能 1.新建基于对话框的应用程序 2.拖拽两按钮<设置此窗口鼠标><还原鼠标>关联函数 - void CGkbc8Dlg::OnSet()
- {
- CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"cur(*.cur)|*.cur|ani(*.ani)|*.ani||");
- if(IDOK==Dlg.DoModal())
- m_Cursor=LoadCursorFromFile(Dlg.GetPathName());
- }
- void CGkbc8Dlg::OnRestore()
- {
- m_Cursor=m_OldCursor;
- }
复制代码3.添加两变量private: HCURSOR m_Cursor;//窗口设置用鼠标句柄 HCURSOR m_OldCursor;//窗口原始鼠标用于还原 并初始化 - m_OldCursor =NULL;
- char ModuleName[MAX_PATH];
- GetModuleFileName(NULL,ModuleName,MAX_PATH);
- CString sPath(ModuleName);
- sPath=sPath.Left(sPath.ReverseFind('\\')+1);
- sPath+="cursors\\aero_link_xl.cur";
- m_Cursor=LoadCursorFromFile(sPath);
复制代码4.添加窗口WM_SETCURSOR消息处理函数 - BOOL CTestDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
- {
- if(!m_OldCursor)
- {
- CURSORINFO pci;
- pci.cbSize=sizeof(CURSORINFO);
- GetCursorInfo(&pci);//获取光标信息
- m_OldCursor=pci.hCursor;
- }
- if(m_Cursor)
- SetCursor(m_Cursor);
- return TRUE;
- return CDialog::OnSetCursor(pWnd, nHitTest, message);
- }
复制代码我们来演示下功能实现的整个过程
|