用键盘操作静态链接打开应用程序中的URLs
2006-07-23 11:20:37 来源:WEB开发网实际的::DrawFocusRect(或者其等价的 MFC 函数 CDC::DrawFocusRect)需要一个矩形,当然还需要一个设备上下文(DC)来进行绘制。但是我应该使用哪一个设备上下文呢?通常,你只能在自己的空间绘制,而不能在别的地方——也就是说在你的控件的窗口中或客户DC中。但我们这里是要在窗口外绘制,因为处于美观,焦点矩形看起来需要比控件稍大一些。所以 CStaticLink::DrawFocusRect要在其父窗口的客户DC中绘制。绘制焦点矩形是少数几种直接在屏幕或父窗口上绘制即可的情况之一。一般来说,做一些临时性的 XOR 操作即可,如同在窗口中进行拖拽操作时绘制的图标或透明图像;此时你可能使用屏幕DC。如果要在另一个窗口的设备上下文上画,唯一的规则是:不管画(paintest)什么,都要进行还原(unpaintest)!
接着,我应该用什么矩形呢?当然是窗口矩形。再想想。窗口矩形对于与控件大小相同的位图来说是不错,但对于文本呢?控件常常比其上的文本大一些,宽一些。谁来负责正确调整其静态控件的大小?如果使用窗口矩形,可以用一个长矩形来装入小文本串,甚或另做一个控件,如 Figure 3 上面部分所示。这种效果使你看起来很不爽。这就是为什么对于文本,CStaticLink::DrawFocusRect 首先要以 DT_CALCRECT 来调用 CDC::DrawText 计算正确围绕该文本的矩形原因。将量好的围绕文本的偏平像素矩形转换为父窗口客户坐标,再调用 CDC::DrawFocusRect ——瞧!正确结果如 Figure 3 下面部分所示。
Figure 3 有 DT_CALCRECT 和 没有 DT_CALCRECT 的区别
现在,用户可以用Tab来定位静态控件并看到焦点矩形。最后要做的事情是处理键盘输入。哪个键负责导航链接?IE 浏览器用回车键,但我不喜欢那样,理由有两个。首先,由键盘按下某个按钮的公认的用户界面模式是按空格键(Space 键)。超链接类似一个按钮,所以我觉得空格键更好。这是对话框的方式,在 Web 窗体中,IE 是也是这么做的。我不懂微软的老大们为什么要选择回车键来做 IE 中的链接导航。回车通常意味着“我搞掂了”,与对话框中的“确认”键相同。既然 CStaticLink 是为对话框设计的,那么它就不应该与回车键的功能相冲突。其次,在对话框中捕获回车键需要做更多的工作(参见 2000 年 7 月的专栏文章)。
- ››键盘样式风格有关设置
- ››静态照片完美合成 美图秀秀幻影动感效果
- ››操作系统资源不足两种方案解决办法
- ››操作DHTML表格的C++对象
- ››操作微软文档的JAVA api项目:Apache POI 3.6发布...
- ››操作系统拾遗之进程和线程
- ››键盘流必备 - Windows 7常用快捷键整理之基础篇
- ››键盘流必备 - Windows 7常用快捷键整理之WIN键篇
- ››键盘流必备 - Windows 7常用快捷键整理之任务栏篇...
- ››键盘流必备 - Windows 7常用快捷键整理之资源管理...
- ››键盘极客 - 使用组合键来关闭Windows 7
- ››操作系统还原:你需要明白的几件事
更多精彩
赞助商链接