Dragon  
Dragon
日历
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

由CWnd继承来的用户窗口添加加速键:(非框架窗口缺少CFrameWnd中对加速键的支持)
1.给派生类添加一个数据成员m_hAccelTable(类型HACCEL).
2.向程序添加加速键资源,添加资源我已经在另一篇文章中讲过,还有加一个具有响应函数的ID对应加速键.然后在应用程序生存期初期,调用API函数::LoadAccelerators加载加速键表.将::LoadAccelerators返回的句柄复制到m_hAccelTable.
 
  //In CMainWindow's constructor
  m_hAccelTable=LoadAccelerators(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));

3.在窗口类中重载PreTranslateMessage并调用将句柄存储在m_hAccelTable中的::TranslateAccelerator.将::TranslateAccelerator返回的
的值作为PreTranslateMessage的返回值.


//virtual BOOL PreTranslateMessage(MSG *pMsg);函数原型

BOOL CMainWindow::PreTranslateMessage(MSG *pMsg)
{
 
if(CWnd::PreTranslateMessage(pMsg))
  
return TRUE;
 
return ((m_hAccelTable != NULL) && ::TranslateAccelerator(m_hWnd,m_hAccelTable,pMsg));
}
posted on 2008-11-08 14:28 Dragon 阅读(563) 评论(0)  编辑 收藏 引用 所属分类: VC

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客