Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CTOLTIPTRL未显示_C++_Visual C++_Mfc - Fatal编程技术网

C++ CTOLTIPTRL未显示

C++ CTOLTIPTRL未显示,c++,visual-c++,mfc,C++,Visual C++,Mfc,我已经创建了一个从CWnd派生的窗口。该窗口有一个图标和一个文本。 使用DrawIconEx()和dc.DrawText()方法,我在onPaint()方法中创建图标和文本。从技术上讲,我在这个窗口中没有任何控件(如CStatic、CButton等) 为了创建工具提示,我添加了以下逻辑 头文件:添加了成员变量 CToolTipCtrl m_toolTipCtrl; 源文件:在OnCreate()方法中添加了以下内容 在PreTranslateMessage(MSG*pMsg)虚拟方法中添

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

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

头文件:添加了成员变量

CToolTipCtrl    m_toolTipCtrl;
源文件:在OnCreate()方法中添加了以下内容

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

问题: 当我将鼠标光标放置在此窗口上时,工具提示不显示。 我尝试的是: 我注意到工具提示已经创建,但当鼠标悬停在窗口上时,PreTranslateMessage()方法中的断点没有命中

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

有人能告诉我这里出了什么问题吗


提前谢谢

通常创建工具提示控件,方法是将指针指向父窗口,并添加该窗口中的控件。这意味着传递给create的窗口指针和传递给AddTool的窗口指针通常不相同

您希望在窗口本身中创建工具提示控件,而不是控件

可以为矩形区域创建工具提示,并将整个窗口作为该区域(如果愿意,也可以仅作为窗口的一部分)

下面是一个如何在不使用MFC的情况下使用Windows API的示例:

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

同时,也许上面的例子结合了 会有足够的信息让你弄明白

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


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

这可能有助于您将句柄传递给按钮,而不是
。例如
m_toolTipCtrl.AddTool(ptrButton,_T(“text”))
m_toolTipCtrl.Create(this)
m_toolTipCtrl.AddTool(this, _T("Warning Message Tool-Tip"));
m_toolTipCtrl.Activate(TRUE);