gpt4 book ai didi

c++ - 使用 CWnd::EnableTooltips() 是否可以实现多行工具提示?

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:24 24 4
gpt4 key购买 nike

我正在尝试使我的工具提示多行化,但我似乎不太顺利。我在创建后直接调用 CWnd::EnableTooltips()(在本例中为编辑框)并处理 TTN_NEEDTEXT 消息。我的工具提示显示正确,但仅显示为一行。

我尝试过在处理 TTN_NEEDTEXT 时将“\n”添加到我传递的字符串中,还尝试过“\r\n”。没有运气。它只是将它们显示为工具提示字符串中的普通文本。

然后我尝试手动插入 0x0D0A,但这只显示为框。

我一直在深入研究,并在网络上发现了一些临时引用资料,说当通过 CWnd 函数使用工具提示时,多行行为可能不起作用。我宁愿不必用 CToolTipCtrl 替换(因为它是一个相当大的项目)。有没有人遇到过这个?如果是这样,有什么解决办法吗?

最佳答案

我在 TTN_NEEDTEXT 处理程序中使用以下代码成功地将\n 分隔工具提示制作成多行工具提示

对于 DevStudio 6

CToolTipCtrl* pToolTip = AfxGetThreadState()->m_pToolTip;
pToolTip->SetMaxTipWidth(SHRT_MAX);

每次调用 TTN_NEEDTEXT 时都必须再次调用,否则不会坚持。

我在阅读 http://www.codeproject.com/KB/list/CListCtrl_ToolTip.aspx 的代码时发现了这个技巧

注意:那里的代码实际上执行以下操作,但不会在 VS6 中编译,因为 ModuleThreadState 在 VS6 中没有 m_pToolTip 成员(我没有在 VS2005+ 中尝试过以下代码,但我认为它可以在那里工作)

BOOL CListCtrl_EnableToolTip::OnToolNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{
...
// Break tooltip into multiple lines if it contains newlines (/n/r)
CToolTipCtrl* pToolTip = AfxGetModuleThreadState()->m_pToolTip;
if (pToolTip)
pToolTip->SetMaxTipWidth(SHRT_MAX);
...
}

关于c++ - 使用 CWnd::EnableTooltips() 是否可以实现多行工具提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com