最下面三句话目的是想实现除了在工具栏弹出ToolTip外,在状态栏上也能显示ToolTip?为什么不行?
BOOL CDialogModalless::OnToolTipText(UINT,NMHDR *pNMHDR,LRESULT *pResult)
{
ASSERT(pNMHDR->code==TTN_NEEDTEXTA || pNMHDR->code==TTN_NEEDTEXTW); //UNICODE消息
TOOLTIPTEXTA* pTTTA=(TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW=(TOOLTIPTEXTW*)pNMHDR;
UINT nID=pNMHDR->idFrom; //idFrom为工具条的HWND if(pNMHDR->code==TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || pNMHDR->code==TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
nID=::GetDlgCtrlID((HWND)nID);
}
if(nID!=0) //不为分隔符
{
CString strTipText;
strTipText.LoadString(nID);
strTipText=strTipText.Mid(strTipText.Find("\n",0)+1);
#ifndef _UNICODE
if(pNMHDR->code==TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText,strTipText,sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText,strTipText,sizeof(pTTTW->szText));
}
#else
if(pNMHDR->code==TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText,strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText,strTipText,sizeof(pTTTW->szText));
}
#endif
*pResult=0; ::SetWindowPos(pNMHDR->hwndFrom,HWND_TOP,0,0,0,0,SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_NOOWNERZORDER);
this->SendMessage(WM_SETMESSAGESTRING,nID);
this->SendMessage(WM_IDLEUPDATECMDUI);
this->UpdateWindow();
return true;
}
return true;
}
BOOL CDialogModalless::OnToolTipText(UINT,NMHDR *pNMHDR,LRESULT *pResult)
{
ASSERT(pNMHDR->code==TTN_NEEDTEXTA || pNMHDR->code==TTN_NEEDTEXTW); //UNICODE消息
TOOLTIPTEXTA* pTTTA=(TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW=(TOOLTIPTEXTW*)pNMHDR;
UINT nID=pNMHDR->idFrom; //idFrom为工具条的HWND if(pNMHDR->code==TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || pNMHDR->code==TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
nID=::GetDlgCtrlID((HWND)nID);
}
if(nID!=0) //不为分隔符
{
CString strTipText;
strTipText.LoadString(nID);
strTipText=strTipText.Mid(strTipText.Find("\n",0)+1);
#ifndef _UNICODE
if(pNMHDR->code==TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText,strTipText,sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText,strTipText,sizeof(pTTTW->szText));
}
#else
if(pNMHDR->code==TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText,strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText,strTipText,sizeof(pTTTW->szText));
}
#endif
*pResult=0; ::SetWindowPos(pNMHDR->hwndFrom,HWND_TOP,0,0,0,0,SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_NOOWNERZORDER);
this->SendMessage(WM_SETMESSAGESTRING,nID);
this->SendMessage(WM_IDLEUPDATECMDUI);
this->UpdateWindow();
return true;
}
return true;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货