AddToolTip(Button1.Handle,   @ti,   1,   pchar('提示内容'),   pchar('提示标题'),0,0);   //数字1可以该为其它的数字来显示不同的图标

解决方案 »

  1.   


    我这儿正常 D7, DXE
      

  2.   

    刚好用XE5,碰到这问题...
    procedure CreateBox(h:HWND;text,cap:string;IconType:integer=1;t:integer=1000);
    var
     r : TRect;                      
     hTooltip: Cardinal;    
     ti: TToolInfo;
    begin
     hToolTip := CreateWindow('Tooltips_Class32',nil,$40,0,0,0,0,0,0,hInstance,nil);
     if hToolTip <> 0 then
     begin
       SetWindowPos(hToolTip, HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);  
       ti.cbSize := SizeOf(TToolInfo);
       ti.uFlags := TTF_IDISHWND or TTF_TRACK;
       ti.hInst := hInstance;
     ti.lpszText :=PWideChar(text);
     SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(@ti));
     if (IconType > 3) or (IconType < 0) then IconType:=0;
     SendMessage(hToolTip,WM_USER + 33,IconType,Integer(PWideChar(cap)));
     GetWindowRect(H,R);
     SendMessage(hToolTip,TTM_TRACKPOSITION, 0, MAKELONG((r.Right - r.Left) div 2 + r.Left, (r.Bottom - r.Top) div 2 + r.Top));      
     SendMessage(hToolTip, TTM_TRACKACTIVATE, Integer(True), Integer(@ti));
     Sleep(t);
     DestroyWindow(hToolTip);
     end;
    end;调用:CreateBox(bsSkinEdit1.Handle,'Caps Lock On','大小写锁定');
    有图: