用键盘操作静态链接打开应用程序中的URLs
2006-07-23 11:20:37 来源:WEB开发网核心提示: 所以当用户用 Tab 键移到链接时,我用空格键来导航到链接,用键盘操作静态链接打开应用程序中的URLs(5),为了实现导航,你必须处理两个消息,返回的错误代码是5,在 WinError.h 中是ERROR_ACCESS_DENIED,WM_CHAR 肯定是其中之一:void CStatic
所以当用户用 Tab 键移到链接时,我用空格键来导航到链接。为了实现导航,你必须处理两个消息。WM_CHAR 肯定是其中之一:
void CStaticLink::OnChar(UINT nChar,...)
{
if (nChar==VK_SPACE) {
Navigate();
}
}
但是在你的静态链接能够得到 WM_CHAR 消息之前,你必须告诉对话框你对这个消息感兴趣。通常静态控件得不到 WM_CHAR 消息(记住:因为它们是静态的)。有一个特殊的消息可以告诉对话框你想得到什么——这个消息就是 WM_GETDLGCODE:
UINT CStaticLink::OnGetDlgCode()
{
// 告诉对话框我想要 chars
return DLGC_WANTCHARS;
}
完成上述工作便万事俱备。现在当用户用 Tab 键到达超链接上时,按下空格键便可以导航了。酷。
最后是一个警告:小心选择正确的静态链接Tab顺序。你的超链接通常应该在Tab顺序的最后,即使它们出现在对话框的最前面。你可能不想让你的对话框一启动输入焦点就落在公司( ACME )标徽链接上。并且如果你在具有其它控件的窗体/对话框中使用 CStaticLink,你可能不想Tab键从某个编辑框跳过超链接到另外一个编辑框或按钮。所以我的忠告是保持所有超链接在Tab顺序的最后,除非你有充足的理由不这样做。
我写了一个例子程序 LinkTest,它使用新的具备键盘操作能力的 CStaticLink。请下载代码参考细节
我有一个 MFC 程序,调用 ShellExecute 来打开一个 Web 页面。如:
ShellExecute "http://www.microsoft.com"
在我使用托管扩展前,运行正常,但是一使用托管扩展它就不行了。返回的错误代码是5,在 WinError.h 中是 ERROR_ACCESS_DENIED。我不懂为什么会存取失败。ShellExecute 不能与托管扩展一起用吗?
- ››键盘样式风格有关设置
- ››静态照片完美合成 美图秀秀幻影动感效果
- ››操作系统资源不足两种方案解决办法
- ››操作DHTML表格的C++对象
- ››操作微软文档的JAVA api项目:Apache POI 3.6发布...
- ››操作系统拾遗之进程和线程
- ››键盘流必备 - Windows 7常用快捷键整理之基础篇
- ››键盘流必备 - Windows 7常用快捷键整理之WIN键篇
- ››键盘流必备 - Windows 7常用快捷键整理之任务栏篇...
- ››键盘流必备 - Windows 7常用快捷键整理之资源管理...
- ››键盘极客 - 使用组合键来关闭Windows 7
- ››操作系统还原:你需要明白的几件事
更多精彩
赞助商链接