ダイアログ型のアプリケーションに無理やりツールバーを設置した場合、正攻法ではツールバー上でToolTipが表示されない。表示させる方法はMSDNをちょっと調べればと分かるけど、ちょっと深いところにあったのでここに書いておく。
BOOL CPssDlg::OnInitDialog()
{
...
EnableToolTips();
// ツールバー
m_ToolBar.CreateEx(this,TBSTYLE_FLAT|TBSTYLE_TRANSPARENT,
WS_CHILD|WS_VISIBLE|CBRS_TOOLTIPS|CBRS_ALIGN_TOP,CRect(0,0,0,0), IDR_MAIN_TOOLBAR );//TOOLBAR_ID );
m_ToolBar.LoadToolBar( IDR_MAIN_TOOLBAR );
m_ToolBar.SetWindowPos( NULL, 0, 0,
rect.right-rect.left, 20, SWP_NOZORDER );
...
}
BOOL CPssDlg::OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult)
{
// ツールチップを表示
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT*)pNMHDR;
UINT nID = pNMHDR->idFrom;
if(pTTT->uFlags & TTF_IDISHWND)
{
nID = ::GetDlgCtrlID((HWND)nID);
if(nID)
{
pTTT->lpszText = MAKEINTRESOURCE(nID);
pTTT->hinst = AfxGetResourceHandle();
return(TRUE);
}
}
else{
// nID がそのままコントロールIDである。
pTTT->lpszText = MAKEINTRESOURCE(nID);
pTTT->hinst = AfxGetResourceHandle();
}
return(FALSE);
}
強調部分はネットで調べても分からなかった。横着せず自分で調べなきゃダメってことか…。