我的任务是为配置菜单中的每个项目分配工具提示.我已经完成了"添加"工具提示到页面上的每个控件,但似乎有时工具提示显示,有时它不显示,具体取决于屏幕上控件的位置.
首先工具提示 - 我的页面
EnableToolTips(TRUE);
Run Code Online (Sandbox Code Playgroud)
在每个CPropertyPage的OnInitDialog方法中.然后我添加通知地图
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipText)
Run Code Online (Sandbox Code Playgroud)
使用OnToolTipText函数看起来如此
BOOL CCfgPrefPage::OnToolTipText( 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)
{
if( nID == GetDlgItem(IDC_PICKDIST_EDIT)->GetDlgCtrlID())
_tcsncpy_s(pTTT->szText, _T("Tool Tip Text"), _TRUNCATE);
else if( nID == GetDlgItem(IDC_ENDPTTOL_EDIT)->GetDlgCtrlID())
_tcsncpy_s(pTTT->szText, _T("Tool Tip Text"), _TRUNCATE);
pTTT->lpszText = pTTT->szText; // Sanity Check
pTTT->hinst = AfxGetResourceHandle(); // Don't think this is needed at all
return TRUE;
}
}
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
对于我的一些控件来说,工具提示似乎不会显示出来.对于大多数复选框控件,工具提示会显示,但有一些他们只是不显示.没有其他控件覆盖它们,它们没有被禁用.
另一件事,如果我使用非标准光标窗口反复闪烁工具提示,那么在某些情况下它是不可读的.我怎样才能解决这个问题?这在CEdit控件上不是问题,为什么在其他地方出现问题呢?
编辑:更新,多年来一直在页面上的控件似乎显示工具提示.我现在/今天尝试添加的任何控件都不会显示工具提示.无论位置,控制类型,设置如何,我都无法在新插入的控件上显示单个工具提示.
如果您不想使用我建议的帮助程序类,那么请修复代码中的问题.首先,在映射偶数处理程序时使用ON_NOTIFY_EX_RANGE宏,如下所示(这将覆盖所有ID):
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
Run Code Online (Sandbox Code Playgroud)
接下来,您需要修复您的功能.我在这看到一些问题.首先,在测试TTF_IDISHWND标志时,您只需要重新初始化nID.您不需要将其应用于整个函数.其次,在所有操作之后,您的nID将是实际的对话ID.不需要GetDlgItem()函数
BOOL CCfgPrefPage::OnToolTipText( 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)
{
if( nID == IDC_PICKDIST_EDIT)
_tcsncpy_s(pTTT->szText, _T("Tool Tip Text"), _TRUNCATE);
else if( nID == IDC_ENDPTTOL_EDIT)
_tcsncpy_s(pTTT->szText, _T("Tool Tip Text"), _TRUNCATE);
//pTTT->lpszText = pTTT->szText; // Sanity Check
*pResult = 0;
return TRUE;
}
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4891 次 |
| 最近记录: |