程序有个要求:捕获浮动工具条标题栏单击消息:
HWND hwndToolBarDlg;定义接受句柄的变量,通过此句柄判断是哪个工具条收到消息,此处要获得句柄的对象为m_wndWBToolsub
在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数创建toolbar后引用以下代码:
CWnd* pToolBarDlg;//工具栏的父窗口(对话框)
pToolBarDlg= ( CWnd* ) (m_wndWBToolsub.m_pDockBar);
pToolBarDlg= pToolBarDlg->GetParent();
if( pToolBarDlg->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
{
hwndToolBarDlg= pToolBarDlg->GetSafeHwnd();//对话框的句柄
}
后在BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)函数中去捕获消息,代码如下:
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_NCLBUTTONDOWN) // 非client区域的单击消息
{
if(pMsg->wParam == HTCAPTION) // 光标所在区域为标题栏
{
if ( pMsg->hwnd == hwndToolBarDlg)//hwndToolBarDlg
{
HideSubToolbar();
return TRUE;
}
}
}
return CFrameWnd::PreTranslateMessage(pMsg);
}