C++ 窗口冒泡提示

void __fastcall ShowBalloonTip(TWinControl *Control, int  Icon,
         char *Title, char *Text)
{
    HWND hBalloonTip;
    HWND hPareWnd;
 TOOLINFO ti;
 int w = 0;
 int h =0;
 int Left = 0;
 int Top  = 0;

    hPareWnd    = Control->Handle;
 hBalloonTip = CreateWindow(TOOLTIPS_CLASS, NULL,
  WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_ALWAYSTIP , 
  0, 0, 0, 0,
  hPareWnd, 0, HInstance, NULL);

    if( hBalloonTip )
 {
        ti.cbSize = sizeof(ti);

  /*
   *指定位置上显示气泡提示
   */
  ti.uFlags = TTF_TRACK /*| TTF_ABSOLUTE*/;
        ti.hwnd = hPareWnd;
        ti.lpszText = Text;

  SetWindowPos(hBalloonTip, HWND_TOPMOST, 
   0,0,0,0,
   SWP_NOACTIVATE  | SWP_NOMOVE | SWP_NOSIZE );

  //set color
//        SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
//        SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);

        SendMessage(hBalloonTip, TTM_ADDTOOL, WPARAM(1), LPARAM(&ti));
        SendMessage(hBalloonTip, TTM_SETTITLE, WPARAM(Icon), LPARAM(Title));

  // 定义气泡位置,粘附在指定控件旁边
  GetWindowRect(hPareWnd, &ti.rect);
  Left = ti.rect.left;
  Top =  ti.rect.top;
  w = ti.rect.right - ti.rect.left;
  h = ti.rect.bottom - ti.rect.top;
  SendMessage(hBalloonTip,
    TTM_TRACKPOSITION, WPARAM(0), 
    MAKELONG(w  + Left,h  + Top)); 
  //显示气泡
  SendMessage(hBalloonTip,
    TTM_TRACKACTIVATE,
    WPARAM(True), LPARAM(&ti));  
   //线程等待1秒,在销毁窗口
  Sleep(1000);
  //注意销毁窗
    TOOLINFO ti;
    ti.cbSize = sizeof(ti);
  ti.hwnd = hPareWnd;
   SendMessage(hBalloonTip, TTM_TRACKACTIVATE, WPARAM(0), LPARAM(&ti));
 }
}

 

你可能感兴趣的:(冒泡)