改变窗口中的光标形状

2016-01-29 11:56 65 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

C++ Q&A...

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


原著:Paul DiLascia

翻译:曾国


原文出处:January 2001 issue of MSDN Magazine

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

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


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

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

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

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

HKEY_CLASSES_ROOT.htm="htmlfile"

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
[HKEY_CLASSES_ROOThtmlfileshellopencommand] @=""C:PROGRA~1INTERN~1iexplore.exe" -nohome"

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

[HKEY_CLASSES_ROOThtmlfileshellopencommand]@=""C:PROGRA~1NETSCAPEnetscape.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 的人(有没有人用它啊

来源:http://www.tulaoshi.com/n/20160129/1483979.html

延伸阅读
标签: Web开发
IE提供的模态窗口,在我们制作数据录入窗口和Wizard等功能上,有着非常不错的应用。不过由于一些安全性上的限制,使得在模态窗口中调试脚本变得非常的郁闷。因为模态窗口不支持对象的选取和右键菜单,使得我们想察看html代码非常的不方便。那么有什么办法可以解决吗?     虽然我们在制作模态窗口中的页面时,可以使用普通的IE...
标签: word
在Word2010文档窗口中打开WPS文档 Word2010支持WPS文件的打开和编辑,用户可以在Word2010文档窗口中打开并编辑WPS文件。即使是金山软件最新版本的WPS2009文档,Word2010也能提供完美支持。在Word2010中打开WPS文件的步骤如下所述:          第1步,打开Word2010文档窗口,依次单击文件→打...
标签: PS PS教程
  一般情况下,大家都是选中SnagIt“输出”菜单下“预览窗口”复选项让SnagIt抓取图片到“SnagIt捕获窗口”中,而且都直接按下“另存为”按钮把图片保存就完事。其实,在“SnagIt捕获窗口”中有很多功能,如用鼠标框出某部分后,按下工具栏上的“修剪”按钮可以把选中部分剪裁下来。按下“复制”按钮可以把它复制到剪贴板中。同时,...
标签: word
Word2010中在窗口中增加按钮的诀窍   在Word2010文档窗口中,要添加按钮不是一件难事,但是由于很多的用户都没有尝试过,因此对于这一技巧很生疏。感兴趣的用户可以一起来学习一下。 Word2010 默认情况下,快速访问工具栏中只有数量较少的命令,用户可以根据需要添加多个自定义命令,操作步骤如下所述: 第1步,打...
标签: 电脑入门
MAC用户都喜欢使用快速查看,来预览电脑中的文本、图片、音乐和视频等内容,不过使用快速查看时,文本中的文字功能将无法使用,这个问题该如何解决呢? 开启方法: 启动终端应用(你可以在/应用程序/实用工具/中找到它),输入下边的命令(可以直接拷贝): defaults write com.apple.finder QLEnableTextSelection -bool TRUE 然后重...

经验教程

427

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部