当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 改变窗口中的光标形状
| C++ Q&A...
Rolf Wenger HKCU\System\Mumble\Bletch\Blah\Gak\DefaultBrowser 如果你知道这样的键值,请写信告诉我。不过,我知道一个简单的解决办法,那就是查找哪个程序和HTML文件相关联。在Window操作系统中HTML文件的后缀通常为.htm和.html,所以你要做的就是查找HKCR/.htm的键值。如果你查找了会找到下面的键值: HKEY_CLASSES_ROOT\.htm="htmlfile" 再根据这个键值查找HKCR/htmlfilm的条目,你会找到下面的键值: [HKEY_CLASSES_ROOT\htmlfile\shell\open\command] @="\"C:\\PROGRA~1\\INTERN~1\\iexplore.exe\" -nohome" 这个键值表明Microsoft Internet Explorer (iexplore.exe)是用来打开.htm文件的程序。(-nohome开关标志告诉IE浏览器不要打开主页)如果默认的浏览器是Netscape,这个条目会是这样: [HKEY_CLASSES_ROOT\htmlfile\shell\open\command]@="\"C:\\PROGRA~1\\NETSCAPE\\netscape.exe\". 我的回答满意吗? Rolf Wenger 有两种方式可以改变窗口中的光标:你可以在注册窗口类时声明一个全局光标(HCURSOR)作为WNDCLASS结构的一部分,或者通过处理WM_SETCURSOR消息来手工设置光标。标准的MFC程序采用第一种方式设置光标,它自动为主窗口注册一个箭头光标。你可以在主窗口或子窗口中通过处理WM_SETCURSOR消息来改写这个行为。 // 在按钮类中处理WM_SETCURSOR消息BOOL CMyButton::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT msg) { ::SetCursor(m_hMyCursor); 不管什么时候,当用户将鼠标移动到按钮上并且鼠标没有被捕获时,Windows 会发送一条WM_SETCURSOR消息给按钮。它传递一个窗口句柄——即鼠标指针指向的窗口, 此时就是按钮本身;击中测试码——即在WM_NCHITTEST消息中使用的HTXXX码(见 Figure 1);和一个触发事件的消息ID,比如说它触发了WM_MOUSEMOVE事件。设置鼠标 光标的最佳机会就是在处理WM_SETCURSOR消息的时候。如果要这么做,你必须返回TRUE以阻止窗口默认的处理过程。 |