亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? balloonhelp.cpp

?? 實時監控
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
   ON_WM_TIMER()   ON_WM_NCHITTEST()   ON_WM_MOUSEMOVE()   ON_WM_DESTROY()
   ON_WM_CLOSE()
   ON_WM_SHOWWINDOW()
   ON_MESSAGE(WM_PRINT, OnPrint)
   ON_MESSAGE(WM_PRINTCLIENT, OnPrintClient)
END_MESSAGE_MAP()void CBalloonHelp::OnShowWindow(BOOL bShow, UINT)
{
   if ( NULL != m_fnAnimateWindow )
   {
      if ( bShow && !(m_unOptions&unDISABLE_FADEIN) )
         m_fnAnimateWindow( m_hWnd, 200, AW_BLEND);
      else if ( !bShow && !(m_unOptions&unDISABLE_FADEOUT) )
         m_fnAnimateWindow( m_hWnd, 200, AW_HIDE | AW_BLEND );
   }
}
// Erase client area of balloonBOOL CBalloonHelp::OnEraseBkgnd(CDC* pDC) {   CRect rect;   GetClientRect(&rect);   pDC->FillSolidRect(&rect, m_crBackground);   return TRUE;}// draw balloon client area (title & contents)void CBalloonHelp::OnPaint() {   CPaintDC dc(this); // device context for painting   DrawClientArea(&dc);}// draw balloon shape & bordervoid CBalloonHelp::OnNcPaint() {
   CWindowDC dc(this);   DrawNonClientArea(&dc);}// draw the window into the specified device contextLRESULT CBalloonHelp::OnPrint(WPARAM wParam, LPARAM lParam)
{
   CDC* pDC = CDC::FromHandle((HDC)wParam);
   if ( lParam & PRF_NONCLIENT  ) 
      DrawNonClientArea(pDC);
   return Default();
}

// draw the client area into the specified device contextLRESULT CBalloonHelp::OnPrintClient(WPARAM wParam, LPARAM lParam)
{
   CDC* pDC = CDC::FromHandle((HDC)wParam);
   if ( lParam & PRF_ERASEBKGND ) 
      SendMessage( WM_ERASEBKGND, wParam );
   if ( lParam & PRF_CLIENT ) 
      DrawClientArea(pDC);
   return 0;
}
// Close button handlervoid CBalloonHelp::OnLButtonDown(UINT, CPoint point) {   if (m_unOptions & unSHOW_CLOSE_BUTTON)   {      CRect rect;      GetClientRect(&rect);      rect.left = rect.right-::GetSystemMetrics(SM_CXSIZE);      rect.bottom = rect.top+::GetSystemMetrics(SM_CYSIZE);      if ( rect.PtInRect(point) )      {         m_uCloseState |= DFCS_PUSHED;         SetCapture();         OnMouseMove(0, point);      }   }}// Close button handler,// URL handlervoid CBalloonHelp::OnLButtonUp(UINT, CPoint point) {   if ( (m_unOptions & unSHOW_CLOSE_BUTTON) && (m_uCloseState & DFCS_PUSHED) )   {      ReleaseCapture();      m_uCloseState &= ~DFCS_PUSHED;      CRect rect;      GetClientRect(&rect);      rect.left = rect.right-::GetSystemMetrics(SM_CXSIZE);      rect.bottom = rect.top+::GetSystemMetrics(SM_CYSIZE);      if ( rect.PtInRect(point) )         HideBalloon();   }   else if ( !m_strURL.IsEmpty() )   {      CRect rect;      GetClientRect(&rect);      if ( rect.PtInRect(point) )      {         ::ShellExecute(NULL, NULL, m_strURL, NULL, NULL, SW_SHOWNORMAL);         HideBalloon();      }   }}//// Ensure WM_MOUSEMOVE messages are sent for the entire window//UINT CBalloonHelp::OnNcHitTest(CPoint){   return HTCLIENT;}//// do mouse tracking://   Tracking for close button;//void CBalloonHelp::OnMouseMove(UINT, CPoint point){   if (m_unOptions & unSHOW_CLOSE_BUTTON)   {      CRect rect;      GetClientRect(&rect);      rect.left = rect.right-::GetSystemMetrics(SM_CXSIZE);      rect.bottom = rect.top+::GetSystemMetrics(SM_CYSIZE);      CClientDC dc(this);      UINT uState = DFCS_CAPTIONCLOSE;      BOOL bPushed = m_uCloseState&DFCS_PUSHED;      m_uCloseState &= ~DFCS_PUSHED;      if ( rect.PtInRect(point) )      {         uState |= DFCS_HOT;         if ( bPushed )            uState |= DFCS_PUSHED;      }      else      {         uState |= DFCS_FLAT;      }      if ( uState != m_uCloseState )      {         dc.DrawFrameControl(&rect, DFC_CAPTION, uState);         m_uCloseState = uState;      }      if ( bPushed )         m_uCloseState |= DFCS_PUSHED;   }}// Ensures client area is the correct size relative to window size,// presearves client contents if possible when moving.void CBalloonHelp::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) {
   // nTIP_MARGIN pixel margin on all sides
   ::InflateRect(&lpncsp->rgrc[0], -nTIP_MARGIN,-nTIP_MARGIN);

   // nTIP_TAIL pixel "tail" on side closest to anchor
   switch ( GetBalloonQuadrant() )
   {
   case BQ_TOPRIGHT:
   case BQ_TOPLEFT:
      lpncsp->rgrc[0].top += nTIP_TAIL;
      break;
   case BQ_BOTTOMRIGHT:
   case BQ_BOTTOMLEFT:
      lpncsp->rgrc[0].bottom -= nTIP_TAIL;
      break;
   }

   // sanity: ensure rect does not have negative size
   if ( lpncsp->rgrc[0].right < lpncsp->rgrc[0].left )
      lpncsp->rgrc[0].right = lpncsp->rgrc[0].left;
   if ( lpncsp->rgrc[0].bottom < lpncsp->rgrc[0].top )
      lpncsp->rgrc[0].bottom = lpncsp->rgrc[0].top;

   if ( bCalcValidRects )
   {
      // determine if client position has changed relative to the window position
      // if so, don't bother presearving anything.
      if ( !::EqualRect(&lpncsp->rgrc[0], &lpncsp->rgrc[2]) )
      {
         ::SetRectEmpty(&lpncsp->rgrc[2]);
      }
   }
}// handle kill timervoid CBalloonHelp::OnTimer(UINT nIDEvent) {   // really shouldn't be any other timers firing, but might as well make sure   if ( nIDEvent == ID_TIMER_CLOSE )   {      KillTimer(m_unTimerClose);      HideBalloon();   }}// Called as the window is being destroyed.  Completes destruction after removing keyboard hook.void CBalloonHelp::OnDestroy()
{
   // remove hooks
   RemoveMouseHook();
   RemoveKeyboardHook();
   RemoveCallWndRetHook();

   // destroy
   CWnd::OnDestroy();
}

// close the balloon, performing any set transition effect.
void CBalloonHelp::OnClose()
{
   HideBalloon();
}

// Called after window has been destroyed.  Destroys the object if option is set.
void CBalloonHelp::PostNcDestroy()
{
   CWnd::PostNcDestroy();
  
   // free object if requested
   // be careful with this one :D
   if ( m_unOptions & unDELETE_THIS_ON_CLOSE )
      delete this;
}

// Keyboard hook: used to implement the unCLOSE_ON_KEYPRESS option
LRESULT CBalloonHelp::KeyboardHookProc( int code, WPARAM wParam, LPARAM lParam){
   // Skip if the key was released or if it's a repeat
   // Bit 31:  Specifies the transition state. The value is 0 if the key  
   //       is being pressed and 1 if it is being released (see MSDN).
   if ( code>=0 && !(lParam&0x80000000) && NULL != m_hWnd )
   {
      PostMessage(WM_CLOSE);
   }
   return ::CallNextHookEx(m_hKeyboardHook, code, wParam, lParam);
}

// Mouse hook: used to implement un-obtrusive mouse tracking
LRESULT CBalloonHelp::MouseHookProc(int code, WPARAM wParam, LPARAM lParam)
{
   if (code>=0 && NULL != m_hWnd )
   {
      switch ( (UINT)wParam )
      {
      case WM_NCMOUSEMOVE:
      case WM_MOUSEMOVE:
         if ((m_unOptions & unCLOSE_ON_MOUSE_MOVE))
         {
            CPoint pt;
            ::GetCursorPos(&pt);
            if ((abs(pt.x-m_ptMouseOrig.x) > m_nMouseMoveTolerance || abs(pt.y-m_ptMouseOrig.y) > m_nMouseMoveTolerance) )
               PostMessage(WM_CLOSE);
         }
         break;
      case WM_NCLBUTTONDOWN:
      case WM_LBUTTONDOWN:
         if ((m_unOptions & unCLOSE_ON_LBUTTON_DOWN))
            PostMessage(WM_CLOSE);
         break;
      case WM_NCMBUTTONDOWN:
      case WM_MBUTTONDOWN:
         if ((m_unOptions & unCLOSE_ON_MBUTTON_DOWN))
            PostMessage(WM_CLOSE);
         break;
      case WM_NCRBUTTONDOWN:
      case WM_RBUTTONDOWN:
         if ((m_unOptions& unCLOSE_ON_RBUTTON_DOWN))
            PostMessage(WM_CLOSE);
         break;
      case WM_NCLBUTTONUP:
      case WM_LBUTTONUP:
         if ((m_unOptions & unCLOSE_ON_LBUTTON_UP))
            PostMessage(WM_CLOSE);
         break;
      case WM_NCMBUTTONUP:
      case WM_MBUTTONUP:
         if ((m_unOptions & unCLOSE_ON_MBUTTON_UP))
            PostMessage(WM_CLOSE);
         break;
      case WM_NCRBUTTONUP:
      case WM_RBUTTONUP:
         if ((m_unOptions & unCLOSE_ON_RBUTTON_UP))
            PostMessage(WM_CLOSE);
         break;
      }
   }
   return ::CallNextHookEx(m_hMouseHook, code, wParam, lParam);
}

// Window Return hook: used to implement window following
LRESULT CBalloonHelp::CallWndRetProc(int code, WPARAM wParam, LPARAM lParam)
{
   if (code>=0 && NULL != m_hWnd )
   {
      CWPRETSTRUCT* pcwpr = (CWPRETSTRUCT*)lParam;
      if ( WM_MOVE == pcwpr->message && pcwpr->hwnd == m_hwndAnchor )
         PositionWindow();
   }

   return ::CallNextHookEx(m_hCallWndRetHook, code, wParam, lParam);
}

#include "../Resource.h"
void info_balloon(LPCTSTR content, DWORD timeout)
{
	balloon_txt* b = new balloon_txt;
	b->title.LoadString(IDS_INFO);
	b->content = content;
	b->icon = IDI_INFORMATION;
	b->timeout = timeout;
	b->options = CBalloonHelp::unSHOW_INNER_SHADOW;

	if( timeout == -1 )
	{
		b->timeout = 0;	
		b->options |= CBalloonHelp::unCLOSE_ON_LBUTTON_DOWN;
	}
	AfxGetMainWnd()->PostMessage(WM_BALLOON, (WPARAM)b);
}

void warning_balloon(LPCTSTR content, DWORD timeout)
{
	balloon_txt* b = new balloon_txt;
	b->title.LoadString(IDS_WARNING);
	b->content = content;
	b->icon = IDI_WARNING;
	b->timeout = timeout;

	b->options = CBalloonHelp::unSHOW_INNER_SHADOW;

	if( timeout == -1 )
	{
		b->timeout = 0;	
		b->options |= CBalloonHelp::unCLOSE_ON_LBUTTON_DOWN;
	}
	AfxGetMainWnd()->PostMessage(WM_BALLOON, (WPARAM)b);
}

void info_balloon(UINT c, DWORD timeout)
{
	CString str;
	if( str.LoadString(c) )
		info_balloon(str, timeout);
}

void warning_balloon(UINT c, DWORD timeout)
{
	CString str;
	if(str.LoadString(c))
		warning_balloon(str, timeout);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲婷婷综合久久一本伊一区 | 亚洲欧美日韩国产中文在线| 欧美图片一区二区三区| 国产美女视频一区| 亚洲男人的天堂av| 精品国内二区三区| 日韩午夜小视频| 天天色天天爱天天射综合| 久久免费午夜影院| 69成人精品免费视频| 成人免费视频免费观看| 亚洲国产日韩在线一区模特| 亚洲国产电影在线观看| 欧美一区二区三区日韩| 日本韩国精品一区二区在线观看| 麻豆精品一区二区综合av| 亚洲精品视频在线看| 亚洲精品一区二区三区精华液 | 国产一区二区伦理片| 亚洲欧美日韩国产一区二区三区| 国产午夜亚洲精品羞羞网站| 7777精品久久久大香线蕉| 日本韩国精品一区二区在线观看| 国产精品综合av一区二区国产馆| 人人精品人人爱| 亚洲一区二三区| 亚洲色图制服丝袜| 中文字幕不卡的av| 91精品国产综合久久久蜜臀粉嫩| 91国偷自产一区二区使用方法| 国产九色sp调教91| 国产乱妇无码大片在线观看| 日韩电影免费在线看| 亚洲成a人片在线观看中文| 亚洲日本电影在线| 成人欧美一区二区三区| 久久久午夜精品| 在线电影院国产精品| 在线观看av一区二区| 国产精品资源站在线| 国产一二三精品| 国产一区二区三区日韩| 久久精品国产网站| 麻豆成人在线观看| 亚洲一区二区三区精品在线| 亚洲精品成人悠悠色影视| 一级中文字幕一区二区| 亚洲自拍偷拍网站| 26uuu另类欧美亚洲曰本| 久久久亚洲高清| 久久亚洲私人国产精品va媚药| 久久蜜桃av一区二区天堂| 日韩精品一区在线| 337p日本欧洲亚洲大胆精品 | 91色视频在线| 在线观看免费一区| 中文字幕一区二区三| 亚洲色图20p| 一区二区在线观看免费视频播放 | 亚洲欧洲日韩综合一区二区| 国产精品久久久久久一区二区三区| 久久久久久99久久久精品网站| 精品成人一区二区三区| 国产精品妹子av| 一区二区三区美女| 久久日一线二线三线suv| 欧美激情一区二区| 国产女同性恋一区二区| 亚洲欧美影音先锋| 一区二区三区四区不卡视频| 奇米精品一区二区三区在线观看一| 热久久国产精品| 国产 日韩 欧美大片| 91视频观看视频| 欧美一区二区大片| 久久久久国产一区二区三区四区| 国产精品国产三级国产有无不卡| 亚洲精品高清视频在线观看| 天天综合日日夜夜精品| 久久精品国产秦先生| 久久99久久99| www.亚洲免费av| 欧美一卡二卡在线| 中文字幕一区视频| 日韩高清一区二区| 国产成人精品免费一区二区| 91国偷自产一区二区三区观看| 精品免费国产一区二区三区四区| 国产亲近乱来精品视频| 丝袜美腿成人在线| 免费在线观看视频一区| 777午夜精品免费视频| 日韩一区二区三区免费观看| 日韩亚洲欧美在线| 国产精品久久久久久户外露出| 亚洲色图欧美激情| 美女视频黄频大全不卡视频在线播放| 天堂午夜影视日韩欧美一区二区| 久久精品国产成人一区二区三区 | 99国内精品久久| 成人网在线播放| 欧美日韩高清一区二区不卡 | 一区二区在线观看视频| 精品亚洲成a人在线观看| 色婷婷一区二区三区四区| 国产1区2区3区精品美女| 成人亚洲精品久久久久软件| 欧美喷潮久久久xxxxx| 一区二区在线观看av| 日韩欧美国产综合| 欧美三级日韩三级国产三级| 国产亚洲一区二区三区在线观看| 性做久久久久久免费观看欧美| 国产一区在线观看麻豆| 欧美一级免费大片| 亚洲三级在线观看| 成人av动漫在线| 精品久久久三级丝袜| 亚洲一区二区三区在线播放| 五月激情六月综合| 91一区二区三区在线观看| 欧美电视剧在线观看完整版| 亚洲成人自拍网| 色综合天天综合网天天狠天天| 国产日本亚洲高清| 三级欧美韩日大片在线看| 欧美午夜影院一区| 亚洲欧洲成人精品av97| av一区二区久久| 欧美激情一区二区三区蜜桃视频| 国产经典欧美精品| 精品国产凹凸成av人网站| 成人av在线资源| 久久久久久99久久久精品网站| 一区二区三区欧美日韩| 白白色 亚洲乱淫| 中文欧美字幕免费| 成人18精品视频| 久久久亚洲欧洲日产国码αv| 国内精品伊人久久久久av影院| 日韩一区二区三区四区 | 久久免费看少妇高潮| 日韩电影在线一区二区三区| 欧美电影影音先锋| 亚洲成人一二三| 91麻豆精品91久久久久同性| 久久99日本精品| 精品人在线二区三区| 久久99精品久久久久久动态图| 欧美一区二区网站| 精品亚洲国产成人av制服丝袜 | 色婷婷久久久综合中文字幕 | 亚洲6080在线| 欧美高清www午色夜在线视频| 水蜜桃久久夜色精品一区的特点| 欧美视频在线一区| 午夜视频久久久久久| 欧美影片第一页| 日韩精品一级二级| 日韩免费观看2025年上映的电影| 国产精品一区三区| 国产女主播在线一区二区| 色欧美片视频在线观看| 一区二区三区四区不卡在线| 欧美在线综合视频| 天堂成人国产精品一区| 日韩欧美一区在线观看| 老司机免费视频一区二区| 国产偷国产偷精品高清尤物| 成人高清免费观看| 亚洲成人一区二区| 欧美成人综合网站| 91色九色蝌蚪| 日韩精品免费专区| 国产精品视频一二三| 一本大道久久a久久综合| 麻豆高清免费国产一区| 国产日韩成人精品| 欧美三级电影一区| 麻豆精品一区二区综合av| 久久噜噜亚洲综合| 色8久久精品久久久久久蜜| 国产一区二区不卡在线| 日韩欧美在线观看一区二区三区| 国产成人h网站| 亚洲成人激情自拍| 国产精品私人自拍| 在线播放91灌醉迷j高跟美女| 国产电影一区二区三区| 亚洲精品中文在线| 精品国产三级电影在线观看| 成人av集中营| 国产综合色视频| 国产精品传媒视频| 久久久久久影视| 91黄视频在线观看| 成人中文字幕在线| 免费久久99精品国产| 亚洲啪啪综合av一区二区三区| 精品成人免费观看|