改变窗口中的光标形状

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

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

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

C++ Q&A...

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


原著:Paul DiLascia

翻译:曾国


原文出处:January 2001 issue of MSDN Magazine

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

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


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

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

HKCUSystemMumbleBletchBlahGakDefaultBrowser

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

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

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

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)
[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 的人(有没有人用它啊

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

延伸阅读
标签: PS PS教程
  一般情况下,大家都是选中SnagIt“输出”菜单下“预览窗口”复选项让SnagIt抓取图片到“SnagIt捕获窗口”中,而且都直接按下“另存为”按钮把图片保存就完事。其实,在“SnagIt捕获窗口”中有很多功能,如用鼠标框出某部分后,按下工具栏上的“修剪”按钮可以把选中部分剪裁下来。按下“复制”按钮可以把它复制到剪贴板中。同时,...
标签: Web开发
IE提供的模态窗口,在我们制作数据录入窗口和Wizard等功能上,有着非常不错的应用。不过由于一些安全性上的限制,使得在模态窗口中调试脚本变得非常的郁闷。因为模态窗口不支持对象的选取和右键菜单,使得我们想察看html代码非常的不方便。那么有什么办法可以解决吗?     虽然我们在制作模态窗口中的页面时,可以使用普通的IE...
标签: Web开发
一般而言,鼠标以斜向上的箭头显示,移到文本上时变为有头的竖线,移到超级链接上变为手型。但用css可控制鼠标的显示效果,如可使鼠标移到普通文本上也显示成手型。  用css控制的语法如下: 文本或其它页面元素  把 * 换成如下15个效果的一种: hand、crosshair、text、wait、default、help、e-resize、ne-resize、n-r...
标签: word
Word2010中在窗口中增加按钮的诀窍   在Word2010文档窗口中,要添加按钮不是一件难事,但是由于很多的用户都没有尝试过,因此对于这一技巧很生疏。感兴趣的用户可以一起来学习一下。 Word2010 默认情况下,快速访问工具栏中只有数量较少的命令,用户可以根据需要添加多个自定义命令,操作步骤如下所述: 第1步,打...
标签: word
在Word2010窗口中关闭浮动工具栏 浮动工具栏是Word2010中一项极具人性化的功能,当Word2010文档中的文字处于选中状态时,如果用户将鼠标指针移到被选中文字的右侧位置,将会出现一个半透明状态的浮动工具栏。该工具栏中包含了常用的设置文字格式的命令,如设置字体、字号、颜色、居中对齐等命令。将鼠标指针移动到浮动工具栏上将使这些命...

经验教程

972

收藏

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