改变窗口中的光标形状

day林林1987

day林林1987

2016-01-29 11:56

改变窗口中的光标形状,改变窗口中的光标形状

C++ Q&A...

在注册表中查找默认浏览器信息
改变窗口中的光标形状
避免资源ID冲突


原著:Paul DiLascia

翻译:曾国

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)


原文出处:January 2001 issue of MSDN Magazine

原代码下载:CQA0101.exe(47KB)

如何在注册表中查找默认浏览器信息? 如何改变窗口中的光标形状? 如何避免资源ID冲突?


如何在注册表中查找默认浏览器位置的定义?我需要知道EXE文件的路径和名称以便启动一个应用程序会话。我的目的很简单,就是打开默认的浏览器,这样用户能够象普通程序一样使用它,而不是在我设计的程序窗口内浏览因特网。 Rolf Wenger

据我所知,在Window中没有专门指定默认浏览器的注册表键值或设定值。即使专家也很难弄清楚整个注册表,更何况常人。我知道可能存在这样一个键值,

HKCUSystemMumbleBletchBlahGakDefaultBrowser

  如果你知道这样的键值,请写信告诉我。不过,我知道一个简单的解决办法,那就是查找哪个程序和HTML文件相关联。在Window操作系统中HTML文件的后缀通常为.htm和.html,所以你要做的就是查找HKCR/.htm的键值。如果你查找了会找到下面的键值:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
HKEY_CLASSES_ROOT.htm="htmlfile"

再根据这个键值查找HKCR/htmlfilm的条目,你会找到下面的键值:

[HKEY_CLASSES_ROOThtmlfileshellopencommand] @=""C:\PROGRA~1\INTERN~1\iexplore.exe" -nohome"

这个键值表明Microsoft Internet Explorer (iexplore.exe)是用来打开.htm文件的程序。(-nohome开关标志告诉IE浏览器不要打开主页)如果默认的浏览器是Netscape,这个条目会是这样:

[HKEY_CLASSES_ROOThtmlfileshellopencommand]@=""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);
return TRUE;
}

  不管什么时候,当用户将鼠标移动到按钮上并且鼠标没有被捕获时,Windows 会发送一条WM_SETCURSOR消息给按钮。它传递一个窗口句柄——即鼠标指针指向的窗口, 此时就是按钮本身;击中测试码——即在WM_NCHITTEST消息中使用的HTXXX码(见 Figure 1);和一个触发事件的消息ID,比如说它触发了WM_MOUSEMOVE事件。设置鼠标 光标的最佳机会就是在处理WM_SETCURSOR消息的时候。如果要这么做,你必须返回TRUE以阻止窗口默认的处理过程。
  此时处理会如何进行呢?首先窗口默认的处理过程向父窗口(如果有的话)发送WM_SETCURSOR消息到父窗口。如果父窗口处理了WM_SETCURSOR消息(就是说它返回了TURE),Windows就不做什么了, 该消息就算处理完了。如果父窗口没有处理WM_SETCURSOR消息(返回FALSE),Windows就给子窗口一个处理这条消息的机会。假如子窗口也没有处理该消息(返回FALSE),Windows就使用全局光标,要是连全局光标也没有,则使用箭头光标。
  这些意味着什么?这意味着在需要动态设置光标时,你要决定是在子窗口还是在父窗口处理WM_SETCURSOR消息。两个选择都可行,这取决于实际情况。一般来说,最好让对象决定自己的属性,这就是说最好在子窗口处理消息。本例中子窗口是指按钮。但这需要从CButton类继承一个新的按钮类,让它有自己的消息映射和其 它一些必要的属性,如果你是乐于使用 Class Wizard 的人(有没有人用它啊

展开更多 50%)
分享

猜你喜欢

改变窗口中的光标形状

C语言教程 C语言函数
改变窗口中的光标形状

在Word 2003文档窗口中定位插入点光标位置

电脑入门
在Word 2003文档窗口中定位插入点光标位置

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在窗口中输出文字

编程语言 网络编程
在窗口中输出文字

Excel2007改变批注的形状

电脑入门
Excel2007改变批注的形状

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何在改变鼠标光标时不闪烁

编程语言 网络编程
如何在改变鼠标光标时不闪烁

如何在单独的窗口中打开 Excel 文件?

电脑入门
如何在单独的窗口中打开 Excel 文件?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

CAD入门教程 锣丝钉(原创)

CAD入门教程 锣丝钉(原创)

《刀塔传奇》团队副本各章刷高分通关攻略

《刀塔传奇》团队副本各章刷高分通关攻略
下拉加载更多内容 ↓