CToolTipCtrl未显示

时间:2017-08-02 07:04:52

标签: c++ visual-c++ mfc

我创建了一个从CWnd派生的窗口。窗口有一个图标和一个文本。 使用DrawIconEx()和dc.DrawText()方法我在onPaint()方法中创建图标和文本。从技术上讲,我在这个窗口中没有任何控件(如CStatic,CButton等)。

要创建工具提示,我添加了以下逻辑。

头文件:添加了成员​​变量

CToolTipCtrl    m_toolTipCtrl;

源文件:在OnCreate()方法中添加以下内容。

m_toolTipCtrl.Create(this)
m_toolTipCtrl.AddTool(this, _T("Warning Message Tool-Tip"));
m_toolTipCtrl.Activate(TRUE);

在PreTranslateMessage(MSG * pMsg)虚拟方法中添加了RelayEvent     m_toolTipCtrl.RelayEvent(PMSG);

问题: 将鼠标光标放在此窗口上时,未显示工具提示。 我尝试了什么: 我观察到创建了ToolTip但是当鼠标悬停在窗口上时,PreTranslateMessage()方法中的断点没有命中。

注意:此窗口(A)是另一个窗口(B)的子窗口。 B由CView派生。

任何人都可以告诉我这里有什么问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

通常,您通过为父窗口指定指针并添加该窗口中的控件来创建工具提示控件。这意味着传递给create的窗口指针和传递给AddTool的窗口指针通常不一样。

您想在窗口本身创建工具提示控件,而不是控件。

您可以为矩形区域创建工具提示,并将整个窗口作为区域(或者只是窗口的一部分,如果您愿意)。

以下是在没有MFC的情况下如何使用Windows API执行此操作的示例: Create tooltip for whole window area

我还没有在MFC中找到一个好例子;如果我这样做,我会尝试找一个并更新。我自己无法测试,因为我目前无法访问Visual Studio(对不起!)。

与此同时,也许上面的例子与these docs相结合 将有足够的信息让你弄清楚。

您可能还需要在窗口上调用SetToolTips,如图所示 this example

您的工具提示是否在您的视图中的其他位置工作?如果没有,您可能需要调用EnableToolTips(true)。