Socrates的专栏

-----C/VC/SQL SERVER学习

用户操作
[即时聊天] [发私信] [加为好友]
SocratesID:dyx1024
10570次访问,排名11028(-3),好友12人,关注者21人。
八零后程序员大军中的一无名小卒,求学于古城长安,迫于生计,南下深圳已一年有余,工作,学习之事偶记于此,是以学习,分享,交流之目的.
dyx1024的文章
原创 55 篇
翻译 0 篇
转载 27 篇
评论 8 篇
Socrates的公告
C/C++的新手
最近评论
zhaohw1985:为你辛苦劳动创造的大餐,我只能端起美酒与你共享啦!
zhaohongbo83:老三,我感觉这个程序里的东西有可以精简的部分
zhaohongbo83:技术全面的很!!
jjm:支持经典!
YJJ_XXML:收藏收藏~~~
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 三种方法实现快捷键编程收藏

    新一篇: 改变控件的背景色 | 旧一篇: IHTMLDocument2接口的简单操作

      VC中至少有三种快捷键编程的方法,通常在SDI,MDI结构的程序中通过加入Acclelerator资源的消息响应,快速地实现快捷键功能;
    除些之内,还有另两种方法.通常用在基于对话框的程序中.
      1.
    1. #define   IsCTRLpressed()  ((GetKeyState(VK_CONTROL) & (1<<(sizeof(SHORT)*8-1)))!= 0)  //判断Ctrl键是否按下.
    2. BOOL CTDlg::PreTranslateMessage(MSG* pMsg) 
    3. {
    4.     if(pMsg->message == WM_KEYDOWN)
    5.     {
    6.         if(IsCTRLpressed())
    7.         {
    8.             switch(pMsg->wParam)
    9.             {
    10.             case 'A':  //ctrl + A键按下
    11.                 AfxMessageBox("you press ctrl + a");
    12.                 break;
    13.             case 'B':  //ctrl + B键按下
    14.                 AfxMessageBox("you press ctrl + b");
    15.                 break;
    16.             }
    17.         }
    18.     }
    19.     return CDialog::PreTranslateMessage(pMsg);
    20. }
    .2.先添加Accelerator资源,比如:IDR_ACCELERATOR1,在其中添加要使用的快捷键资源:如
      ID:IDR_CTRLTEST
      Key:Ctrl + K
      Type:VIRTKEY
     
    1. //TDlg.h
    2. HACCEL m_hAcc;
    3. //TDlg.h
    4. BOOL CTDlg::OnInitDialog()
    5. {
    6.   ....
    7.   m_hAcc = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
    8. }
    9. BOOL CTDlg::PreTranslateMessage(MSG* pMsg) 
    10. {
    11.     int iRet;
    12.     switch(pMsg->message)
    13.     {
    14.     case WM_KEYDOWN:
    15.     case WM_SYSKEYDOWN:
    16.         iRet = TranslateAccelerator(m_hWnd, hAcc, pMsg);
    17.         if(iRet)
    18.         {
    19.             return TRUE;
    20.         }
    21.     }
    22.     return CDialog::PreTranslateMessage(pMsg);
    23. }
    24. 然后手工添加快捷资源的消息响应:
    25. 比如:
    26. //TDlg.h
    27.     //{{AFX_MSG(CTDlg)
    28.     afx_msg void OnTest();
    29.     //}}AFX_MSG
    30.     DECLARE_MESSAGE_MAP()
    31. //TDlg.cpp
    32.  BEGIN_MESSAGE_MAP(CTDlg, CDialog)
    33.   ON_COMMAND(IDR_CTRLTEST, OnTest)
    34.  END_MESSAGE_MAP()
    35. void CTDlg::OnTest()
    36. {
    37.    AfxMessageBox("you press ctrl + k");
    38. }

    发表于 @ 2008年08月03日 22:14:00|评论(loading...)|收藏

    新一篇: 改变控件的背景色 | 旧一篇: IHTMLDocument2接口的简单操作

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © Socrates