工控编程吧
标题:
237上位机VC MFC不同窗口鼠标的设置与还原
[打印本页]
作者:
qq263946146
时间:
2016-3-2 21:51
标题:
237上位机VC MFC不同窗口鼠标的设置与还原
(, 下载次数: 4)
上传
点击文件名下载附件
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);
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/a5c5e1e5368b33c48d39112b8ffcd4fe/0/0/w_19rsxg0vkh.swf-albumId=5506872509-tvId=5506872509-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4