我想弹出的这个提示涅不是像网上通常描述的、那种当鼠标放上去的时候弹出的气球,
而是在用户完成CEdit中的输入,CEdit失去焦点的时候由KillFocus函数检测用户的输入,如果输入不合法,才在CEdit处弹出气球其实输入非法。
该怎么做呢?
BOOL CDlgProductInfo::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
m_TipNAMECN.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}这段代码还要吗??

解决方案 »

  1.   

    更正:如果输入不合法,才在CEdit处弹出气球提示输入非法
      

  2.   

    那你要处理EN_CHANGE之类的消息!
      

  3.   

    继承 CToolTipCtrl 自己写在 OnKillFocusXXXXX 中判断和处理
      

  4.   

    哎呀你们误解了,我是想在 CEdit的EN_KILLFOCUS函数中启动CToolTilCtrl显示!!
      

  5.   

    你可以在整个对话框OnOk的时候去判断哪个值非法的时候再去弹出Tooltip,CToolTipCtrl有个函数ShowHelpTooltip,去查一下
      

  6.   

    你说的那个是CPPToolTip类,不是微软的CToolTipCtrl类,那个类我倒也想用,但是在vs2008下编译出现一大堆错误!
      

  7.   

    VS2008下编译CPPToolTip没有很多错误吧,都是一些警告而已,有的错误也是因为for(int i...)这样的错误,改一下就可以咯。
      

  8.   

    [Quote=引用 7 楼 TieShou 的回复:]
    VS2008下编译CPPToolTip没有很多错误吧,都是一些警告而已,有的错误也是因为for(int i...)这样的错误,改一下就可以咯。[/Quote1>------ 已启动生成: 项目: SendTool, 配置: Debug Win32 ------
    1>正在链接...
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _IsPlatformNT 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _InitMultipleMonitorStubs 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xGetSystemMetrics@4 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xMonitorFromPoint@12 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xMonitorFromRect@8 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xMonitorFromWindow@8 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xGetMonitorInfo@8 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xEnumDisplayMonitors@16 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xEnumDisplayDevices@16 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnGetSystemMetrics 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromWindow 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromRect 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromPoint 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnGetMonitorInfo 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnEnumDisplayMonitors 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnEnumDisplayDevices 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_fMultiMonInitDone 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_fMultimonPlatformNT 已经在 PPTooltip.obj 中定义
    1>F:\Visual Studio 2008\Projects\新建文件夹 (2) - 复制 - 复制 - 复制 - 复制 - 复制 - 复制\SendTool\Debug\SendTool.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
    1>生成日志保存在“file://f:\Visual Studio 2008\Projects\新建文件夹 (2) - 复制 - 复制 - 复制 - 复制 - 复制 - 复制\SendTool\SendTool\Debug\BuildLog.htm”
    1>SendTool - 19 个错误,0 个警告
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
    我把四个文件加入并修改相应的error之后出现这些错误,这是怎么回事?
      

  9.   

    静态链接MFC吧,设置一下忽略的库就可以,具体忽略哪些,可以去网上搜索一下静态链接MFC。
      

  10.   

    根据楼主所讲,从功能上看,不用tooltip也行。用自定义的窗口,实现一下KILLFOCUS和计时器就可以了。
      

  11.   

    CToolTipCtrl有没有什么函数可以“启动”,“停止”啊?
      

  12.   

    CToolTipCtrl Activate(BOOL bActivate)
      

  13.   

    1>------ 已启动生成: 项目: SendTool, 配置: Debug Win32 ------
    1>正在链接...
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _IsPlatformNT 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _InitMultipleMonitorStubs 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xGetSystemMetrics@4 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xMonitorFromPoint@12 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xMonitorFromRect@8 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xMonitorFromWindow@8 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xGetMonitorInfo@8 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xEnumDisplayMonitors@16 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _xEnumDisplayDevices@16 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnGetSystemMetrics 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromWindow 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromRect 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnMonitorFromPoint 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnGetMonitorInfo 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnEnumDisplayMonitors 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_pfnEnumDisplayDevices 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_fMultiMonInitDone 已经在 PPTooltip.obj 中定义
    1>uafxcwd.lib(wincore.obj) : error LNK2005: _g_fMultimonPlatformNT 已经在 PPTooltip.obj 中定义那有可能是头文件重复包含问题,你用#pragma once试试~~~
      

  14.   

    CToolTipCtrl Activate(BOOL bActivate) 这个函数可以吗,我用了为什么不行呢?
      

  15.   

    由于:
    A tool tip control processes only the following messages, which are sent to it by RelayEvent:
    WM_LBUTTONDOWN 
    WM_MOUSEMOVE
    WM_LBUTTONUP
    WM_RBUTTONDOWN
    WM_MBUTTONDOWN
    WM_RBUTTONUP
    WM_MBUTTONUP

    于是我有一个思路,在需要启动气球的函数里构造一个虚假的WWM_LBUTTONDOWN 消息,然后将此消息发送给m_ToolTip,不知可否,因为我不知道怎么构造一个虚假的WM_LBUTTONDOWN 消息,谁能帮我写一个?