拦截 浮动工具栏的标题双击事件

在MDI中,工具栏一般在主框架CMainFrame中,工具栏是主框架CMainFrame的子窗口,所以可以在主框架CMainFrame中处理子窗口(工具栏)的事件:
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
 // TODO: 在此添加专用代码和/或调用基类
 if(pMsg->message == WM_NCLBUTTONDBLCLK) // 非client区域的双击消息
 {
         if(pMsg->wParam == HTCAPTION) // 光标所在区域为标题栏
  {
   if ( pMsg->hwnd == hwndToolBarDlg)//hwndToolBarDlg解释在下面
   {
    AfxMessageBox( _T("donow"));
    return TRUE;
   }
   
  }
      
 }

 return CWinApp::PreTranslateMessage(pMsg);
}
---------------
其中hwndToolBarDlg是浮动工具栏所在对话框的窗口句柄HWND,它应在前面(创建对话框CMainFrame::OnCreate()时)就赋值了:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 ......
 CWnd* pToolBarDlg;//工具栏的父窗口(对话框)
 
 pToolBarDlg=   ( CWnd* ) (m_wndToolBar.m_pDockBar);
 pToolBarDlg= pToolBarDlg->GetParent();
 if( pToolBarDlg->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
 {
  hwndToolBarDlg= pToolBarDlg->GetSafeHwnd();//对话框的句柄
 }
 ......
}
---------------------------------------------
注意:也可在CMFC_frameApp的PreTranslateMessage()里响应.而且CMFC_frameApp的PreTranslateMessage()比CMainFrame::PreTranslateMessage()先捕捉到该双击消息.

 

由上可知,即使是子窗口(像用户动态创建的CButton等控件),也可以拦截其事件.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值