WEB开发网
开发学院软件开发VC 用键盘操作静态链接打开应用程序中的URLs 阅读

用键盘操作静态链接打开应用程序中的URLs

 2006-07-23 11:20:37 来源:WEB开发网   
核心提示: 实际的::DrawFocusRect(或者其等价的 MFC 函数 CDC::DrawFocusRect)需要一个矩形,当然还需要一个设备上下文(DC)来进行绘制,用键盘操作静态链接打开应用程序中的URLs(4),但是我应该使用哪一个设备上下文呢?通常,你只能在自己的空间绘制,那么它就不应该

实际的::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 月的专栏文章)。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:键盘 操作 静态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接