开发环境VB6
OCX工程 ctlTooltip 显示自定义颜色,文字的提示框OCX文件 ctlTooltip.cls
=========================调用类的过程=============================
Dim clsTooltip as newclsTooltip
With clsTooltip
   .AssignTooltip lblExample,"kkk"   ' 给控件添加Tooltip及tip的内容
End With
Set ctlTooltip = Nothing
================================================================='类文件clsTooltip.cls  Tooltip是用API实现的
Private Const TTM_ADDTOOLA = (WM_USER + 4)Public sub AssignTooltip(byref hTarget as object,byref msg as string)
====================== 问题出在下面这个API里 ======================
    TipWindow = CreateWindowEx(0&, TOOLTIPS_CLASSA, "", _
     TTS_ALWAYSTIP Or TTS_BALLOON, 0, 0, 0, 0, _
    hTarget.hwnd, 0&, App.hInstance, 0&)
=================================================================
    SetWindowPos TipWindow, HWND_TOPMOST, 0, 0, 0, 0, _
    SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE
    GetClientRect hTarget.hwnd, RECT    With ti
        .cbSize = Len(ti)
        .uFlags = TTF_CENTERTIP + TTF_SUBCLASS
        .etc
    End With
    SendMessage TipWindow, TTM_ADDTOOLA, 0, ti
End sub在开发环境下用exe调用OCX,一切正常,可以显示Tooltip,颜色,文字都可以用TTM_UPDATETIPTEXTA/TTM_SETTIPTEXTCOLOR的修改。
但是把exe-Make成执行程序之后再执行,就发现Tooltip值不显示了。用Msgbox看发现上面==TipWindow==的值为0. CreateWindowEx函数没有返回需要的值。为什么?请教下大家?

解决方案 »

  1.   

    估计是ocx的路径放置的不对,你应该和exe放在一起
      

  2.   


    是放在同一个文件夹下的。而且程序已经成功调用OCX了。我觉得问题还是因为DEBUG环境和MAKE出来的程序有区别而导致的。
      

  3.   

    在CreateWindowEx后面 MsgBox Err.LastDllError看看返回什么数字
      

  4.   

    同上先要知道为什么调用API失败.
      

  5.   

    ERROR_CANNOT_FIND_WND_CLASS Cannot find window class.  1407 
      

  6.   

    问题解决了。
    2005年有个帖子里写了,是没加InitCommonControlsEx导致的 - -!