我有一堂课
类 CCfgUserPage : 公共 CPropertyPage
它还拥有各种控件,从复选框到文本区域。我想为每个控件添加工具提示,并且似乎遇到了问题。
在 CCfgUserPage 中,我将此添加到消息映射中
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipText )
当此对象捕获该消息时,它会调用函数 OnToolTipText,如下所示
BOOL CCfgUserPage::OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT nID = pNMHDR->idFrom;
CString ttStr;
int partOrient = GetDlgItem(IDC_PARTORIENT_CHECK)->GetDlgCtrlID();
if (pTTT->uFlags & TTF_IDISHWND)
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
if( nID == partOrient ) // Only Display TT for The buttons with these ID's
{
if( nID == partOrient )
ttStr = "Part Orient";
pTTT->lpszText = (LPTSTR)(LPCTSTR)ttStr;
pTTT->hinst = AfxGetResourceHandle();
return TRUE;
}
}
return FALSE;
}
我还启用了工具提示
CCfgUserPage::OnInitDialog
每当 OnToolTipText 返回 TRUE 时,应用程序就会崩溃并通知我
访问冲突读取位置
我正在尝试遍历堆栈框架,但要深入 MFC 才能了解发生了什么问题。我可能会错过什么会导致这种情况发生?