首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时,GetDlgItemText不返回用于工具提示的文本。

时,GetDlgItemText不返回用于工具提示的文本。
EN

Stack Overflow用户
提问于 2013-04-08 23:17:53
回答 1查看 1.3K关注 0票数 1

最近,我一直在为应用程序中的每个对话框项目添加工具提示。在将它们添加到字符串资源之前,我想在硬编码的文本中添加它们,这样我就可以在编写它们时轻松地更改它。现在到了从资源文件中提取字符串的时候了,似乎我不能让一个字符串出来并显示为工具提示。

下面的代码生成一个空白的工具提示。不过,如果我用_T(“工具提示文本”)这样的实际字符串替换tmpStr,它就能正常工作。

代码:

代码语言:javascript
运行
复制
BOOL CCustomDialog::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)
    {

        CString tmpStr;
        if( nID == IDC_BUTTON1)
        {
            GetDlgItemText(IDS_BUTTON1_TT, tmpStr);
            _tcsncpy_s(pTTT->szText, tmpStr, _TRUNCATE);
        }
        *pResult = 0;
        return TRUE;
    }
    return FALSE;
}

这可能是什么原因呢?

编辑:如果我将希望显示工具提示的控件的ID放在控件ID上,它就会工作,并将控件描述显示为文本。如果我在控件所在的资源文件中添加字符串资源,该字符串资源将不会显示为工具提示。

所以看起来这只是字符串资源的问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-08 23:23:13

在下面的代码部分中

代码语言:javascript
运行
复制
    if( nID == IDC_BUTTON1)
    {
        GetDlgItemText(IDS_BUTTON1_TT, tmpStr);
        _tcsncpy_s(pTTT->szText, tmpStr, _TRUNCATE);
    }

看起来您在ID为IDS_BUTTON1_TT的资源文件中有一个ID为IDC_BUTTON1的按钮和一个关联的文本字符串。

如果这是真的,那么您需要使用tmpStr.LoadString(IDS_BUTTON1_TT)来获取文本。除非您想要按钮控件的文本,否则不要使用GetDlgItemText(),然后您需要使用它的ID IDC_BUTTON1。所以,你可以这样做

代码语言:javascript
运行
复制
    if( nID == IDC_BUTTON1)
    {
        tmpStr.LoadString(IDS_BUTTON1_TT);
        _tcsncpy_s(pTTT->szText, tmpStr, _TRUNCATE);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15882871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档