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

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

?? balloonhelp.cpp

?? 實時監控
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
      PositionWindow();
}

// Sets the URL to be opened when balloon is clicked.  Pass "" to disable.
void CBalloonHelp::SetURL(const CString& strURL)
{
   m_strURL = strURL;
}

// Sets the number of milliseconds the balloon can remain open.  Set to 0 to disable timeout.
void CBalloonHelp::SetTimeout(unsigned int unTimeout)
{
   m_unTimeout = unTimeout;
   // if timer is already set, reset.
   if ( NULL != m_hWnd )
   {
      if ( m_unTimeout > 0 )      {         m_unTimerClose = SetTimer(ID_TIMER_CLOSE, m_unTimeout, NULL);      }      else      {         KillTimer(m_unTimerClose);      }   }}

// Sets the point to which the balloon is "anchored"
void CBalloonHelp::SetAnchorPoint(CPoint ptAnchor, CWnd* pWndAnchor /*= NULL*/)
{
   m_ptAnchor = ptAnchor;
   m_hwndAnchor = pWndAnchor->GetSafeHwnd();

   // if we're anchored to a window, set hook
   if ( NULL != m_hwndAnchor )
      SetCallWndRetHook();
   else
      RemoveCallWndRetHook();

   // if already visible, move
   if ( NULL != m_hWnd )
   {
      // reposition
      PositionWindow();
   }
}

// Sets the title of the balloon
void CBalloonHelp::SetTitle(const CString& strTitle)
{
   SetWindowText(strTitle);
   // if already visible, resize & move
   if ( NULL != m_hWnd )
      PositionWindow();
}

// Sets the content of the balloon (plain text only)
void CBalloonHelp::SetContent(const CString& strContent)
{
   m_strContent = strContent;
   // if already visible, resize & move
   if ( NULL != m_hWnd )
      PositionWindow();
}

// Sets the forground (text and border) color of the balloon
void CBalloonHelp::SetForegroundColor(COLORREF crForeground)
{
   m_crForeground = crForeground;
   // repaint if visible
   if ( NULL != m_hWnd )
      Invalidate(FALSE);
}

// Sets the background color of the balloon
void CBalloonHelp::SetBackgroundColor(COLORREF crBackground)
{
   m_crBackground = crBackground;
   // repaint if visible
   if ( NULL != m_hWnd )
      Invalidate(FALSE);
}
// Sets the distance the mouse must move before the balloon closes when the unCLOSE_ON_MOUSE_MOVE option is set.
void CBalloonHelp::SetMouseMoveTolerance(int nTolerance)
{
   m_nMouseMoveTolerance = nTolerance;
}
//// creates a new balloon window// Parameters://    strTitle    |  Title of balloon//    strContent  |  Content of balloon//    ptAnchor    |  point tail of balloon will be "anchor"ed to//    unOptions   |  One or more of://                :     unCLOSE_ON_LBUTTON_UP   |  closes window on WM_LBUTTON_UP//                :     unCLOSE_ON_MBUTTON_UP   |  closes window on WM_MBUTTON_UP//                :     unCLOSE_ON_RBUTTON_UP   |  closes window on WM_RBUTTON_UP//                :     unCLOSE_ON_LBUTTON_DOWN |  closes window on WM_LBUTTON_DOWN//                :     unCLOSE_ON_MBUTTON_DOWN |  closes window on WM_MBUTTON_DOWN//                :     unCLOSE_ON_RBUTTON_DOWN |  closes window on WM_RBUTTON_DOWN//                :     unCLOSE_ON_MOUSE_MOVE   |  closes window when user moves mouse past threshhold//                :     unCLOSE_ON_KEYPRESS     |  closes window on the next keypress message sent to this thread.//                :     unCLOSE_ON_ANYTHING     |  all of the above.//                :     unDELAY_CLOSE           |  when a user action triggers the close, begins timer.  closes when timer expires.//                :     unDELETE_THIS_ON_CLOSE  |  deletes object when window is closed.  Used by LaunchBalloon(), use with care//                :     unSHOW_CLOSE_BUTTON     |  shows close button in upper right//                :     unSHOW_INNER_SHADOW     |  draw inner shadow in balloon//                :     unSHOW_TOPMOST          |  place balloon above all other windows//                :     unDISABLE_XP_SHADOW     |  disable Windows XP's drop-shadow effect (overrides system and user settings)//                :     unDISABLE_FADE          |  disable the fade-in/fade-out effects (overrides system and user settings)//                :     unDISABLE_FADEIN        |  disable the fade-in effect//                :     unDISABLE_FADEOUT       |  disable the fade-out effect//    pParentWnd  |  Parent window.  If NULL will be set to AfxGetMainWnd() and anchor to screen//    strURL      |  If not empty, when the balloon is clicked ShellExecute() will//                |  be called, with strURL passed in.//    unTimeout   |  If not 0, balloon will automatically close after unTimeout milliseconds.//    hIcon       |  If not NULL, the icon indicated by hIcon will be displayed at top-left of the balloon.//// Returns://    TRUE if successful, else FALSE//BOOL CBalloonHelp::Create(const CString& strTitle, const CString& strContent, 
               const CPoint& ptAnchor, unsigned int unOptions,
               CWnd* pParentWnd /*=NULL*/,
               const CString strURL /*= ""*/,
               unsigned int unTimeout /*= 0*/,
               HICON hIcon /*= NULL*/)
{
   m_strContent   = strContent;
   SetAnchorPoint(ptAnchor, pParentWnd);
   m_unOptions    = unOptions;
   m_strURL       = strURL;
   m_unTimeout    = unTimeout;

   if ( NULL != hIcon )
      SetIcon(hIcon);
      pParentWnd = GetSafeOwner(pParentWnd);   if ( NULL == pParentWnd )   {      // something is wrong; MFC should be able to find a main window.      ASSERT(FALSE);      return FALSE;   }   // if no fonts set, use defaults   if ( NULL == m_pContentFont )   {      m_pContentFont = new CFont;      if ( !m_pContentFont->CreateStockObject(DEFAULT_GUI_FONT) )         return FALSE;   }   // title font defaults to bold version of content font   if ( NULL == m_pTitleFont )   {      m_pTitleFont = new CFont;      LOGFONT LogFont;      m_pContentFont->GetLogFont(&LogFont);      LogFont.lfWeight = FW_BOLD;      if ( !m_pTitleFont->CreateFontIndirect(&LogFont) )         return FALSE;   }   ATOM wndClass = GetClassAtom(!(m_unOptions&unDISABLE_XP_SHADOW));   if ( NULL == wndClass )  // couldn't register class      return FALSE;   // check system settings: if fade effects are disabled or unavailable, disable here too   BOOL bFade = FALSE;   ::SystemParametersInfo(SPI_GETTOOLTIPANIMATION, 0, &bFade, 0);   if (bFade)      ::SystemParametersInfo(SPI_GETTOOLTIPFADE, 0, &bFade, 0);   if (!bFade || NULL == m_fnAnimateWindow)      m_unOptions |= unDISABLE_FADE;   // create invisible at arbitrary position; then position, set region, and finally show   // the idea with WS_EX_TOOLWINDOW is, you can't switch to this using alt+tab   DWORD dwExStyle = WS_EX_TOOLWINDOW;   if ( m_unOptions&unSHOW_TOPMOST )      // make topmost, if requested      dwExStyle |= WS_EX_TOPMOST;   if ( !CreateEx(dwExStyle, (LPCTSTR)wndClass, strTitle, WS_POPUP, CRect(0,0,10,10), pParentWnd, 0, NULL) )      return FALSE;   PositionWindow();   if ( (m_unOptions&unCLOSE_ON_MOUSE_MOVE)      ||(m_unOptions&unCLOSE_ON_LBUTTON_UP)      ||(m_unOptions&unCLOSE_ON_LBUTTON_DOWN)      ||(m_unOptions&unCLOSE_ON_MBUTTON_UP)      ||(m_unOptions&unCLOSE_ON_MBUTTON_DOWN)      ||(m_unOptions&unCLOSE_ON_RBUTTON_UP)      ||(m_unOptions&unCLOSE_ON_RBUTTON_DOWN) )   {      ::GetCursorPos(&m_ptMouseOrig);      SetMouseHook();   }   // these need to take effect even if the window receiving them   // is not owned by this process.  So, if this process does not   // already have the mouse captured, capture it!   if ( (m_unOptions&unCLOSE_ON_LBUTTON_UP)      ||(m_unOptions&unCLOSE_ON_MBUTTON_UP)      ||(m_unOptions&unCLOSE_ON_RBUTTON_UP) )   {      // no, i don't particularly need or want to deal with a situation      // where a balloon is being created and another program has captured      // the mouse.  If you need it, it shouldn't be too hard, just do it here.      if ( NULL == GetCapture() )         SetCapture();   }   if ( m_unOptions&unCLOSE_ON_KEYPRESS )      SetKeyboardHook();   ShowBalloon();   return TRUE;}

// calculate anchor position (adjust for client coordinates if used)CPoint CBalloonHelp::GetAnchorPoint(){   CPoint ptAnchor = m_ptAnchor;   // assume if window was given, point is in client coords
   if ( NULL != m_hwndAnchor )
      ::ClientToScreen(m_hwndAnchor, &ptAnchor);
   return ptAnchor;
}

// determine bounds of screen anchor is on (Multi-Monitor compatibility)void CBalloonHelp::GetAnchorScreenBounds(CRect& rect){   if ( m_screenRect.IsRectEmpty() )   {     
      // get the nearest monitor to the anchor
      HMONITOR hMonitor = MonitorFromPoint(GetAnchorPoint(), MONITOR_DEFAULTTONEAREST);

      // get the monitor bounds
      MONITORINFO mi;
      mi.cbSize = sizeof(mi);
      GetMonitorInfo(hMonitor, &mi);

      // work area (area not obscured by task bar, etc.)
      m_screenRect = mi.rcWork;
   }   rect = m_screenRect;}// calculates the area of the screen the balloon falls into// this determins which direction the tail pointsCBalloonHelp::BALLOON_QUADRANT CBalloonHelp::GetBalloonQuadrant(){   CRect rectDesktop;   GetAnchorScreenBounds(rectDesktop);   CPoint ptAnchor = GetAnchorPoint();      if ( ptAnchor.y < rectDesktop.top + rectDesktop.Height()/2 )   {      if ( ptAnchor.x < rectDesktop.left + rectDesktop.Width()/2 )      {         return BQ_TOPLEFT;      }      else      {         return BQ_TOPRIGHT;      }   }   else   {      if ( ptAnchor.x < rectDesktop.left + rectDesktop.Width()/2 )      {         return BQ_BOTTOMLEFT;      }      else      {         return BQ_BOTTOMRIGHT;      }   }   // unreachable}// Draw the non-client area
void CBalloonHelp::DrawNonClientArea(CDC* pDC)
{
   CRect rect;   GetWindowRect(&rect);   ScreenToClient(&rect);   CRect rectClient;   GetClientRect(&rectClient);   rectClient.OffsetRect(-rect.left, -rect.top);   rect.OffsetRect(-rect.left, -rect.top);   pDC->ExcludeClipRect(&rectClient);   pDC->FillSolidRect(&rect, m_crBackground);   pDC->SelectClipRgn(NULL);   ASSERT(NULL != m_rgnComplete.m_hObject);   CBrush   brushFg;   brushFg.CreateSolidBrush(m_crForeground);   if ( m_unOptions & unSHOW_INNER_SHADOW )   {      CBrush   brushHL;      // slightly lighter color      int red = 170 + GetRValue(m_crBackground)/3;      int green = 170 + GetGValue(m_crBackground)/3;      int blue = 170 + GetBValue(m_crBackground)/3;      brushHL.CreateSolidBrush(RGB(red,green,blue));      m_rgnComplete.OffsetRgn(1,1);      pDC->FrameRgn(&m_rgnComplete, &brushHL, 2, 2);      // slightly darker color      red = GetRValue(m_crForeground)/3 + GetRValue(m_crBackground)/3*2;      green = GetGValue(m_crForeground)/3 + GetGValue(m_crBackground)/3*2;      blue = GetBValue(m_crForeground)/3 + GetBValue(m_crBackground)/3*2;      brushHL.DeleteObject();      m_rgnComplete.OffsetRgn(-2,-2);      brushHL.CreateSolidBrush(RGB(red,green,blue));      pDC->FrameRgn(&m_rgnComplete, &brushHL, 2, 2);      m_rgnComplete.OffsetRgn(1,1);   }   // outline   pDC->FrameRgn(&m_rgnComplete, &brushFg, 1, 1);}
// Draw the client area
void CBalloonHelp::DrawClientArea(CDC* pDC)
{
   CSize sizeHeader = DrawHeader(pDC);   DrawContent(pDC, sizeHeader.cy+nTIP_MARGIN);}

// Calculate the dimensions and draw the balloon header
CSize CBalloonHelp::DrawHeader(CDC* pDC, bool bDraw)
{
   CSize sizeHdr(0,0);
   CRect rectClient;   GetClientRect(&rectClient);   // use this for positioning when drawing                                 // else if content is wider than title, centering wouldn't work
   // calc & draw icon   if ( NULL != m_ilIcon.m_hImageList )
   {      int x = 0;      int y = 0;      ImageList_GetIconSize(m_ilIcon, &x, &y);      sizeHdr.cx += x;      sizeHdr.cy = max(sizeHdr.cy, y);
      m_ilIcon.SetBkColor(m_crBackground);      if (bDraw)         m_ilIcon.Draw(pDC, 0, CPoint(0,0), ILD_NORMAL);//ILD_TRANSPARENT);      rectClient.left += x;   }   // calc & draw close button   if ( m_unOptions & unSHOW_CLOSE_BUTTON )   {      int nBtnWidth = ::GetSystemMetrics(SM_CXSIZE);      // if something is already in the header (icon) leave space      if ( sizeHdr.cx > 0 )         sizeHdr.cx += nTIP_MARGIN;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久97国产精华液好用吗| 日韩成人免费电影| 亚洲色图制服丝袜| 亚洲综合清纯丝袜自拍| 亚洲人成人一区二区在线观看 | 视频一区二区三区中文字幕| 亚洲观看高清完整版在线观看| 日韩不卡一区二区三区| 国产成人在线色| 色综合久久综合中文综合网| 欧美人xxxx| 国产农村妇女毛片精品久久麻豆 | 亚洲国产欧美日韩另类综合 | 丁香桃色午夜亚洲一区二区三区 | 日本不卡1234视频| 国产精品一区二区免费不卡 | 极品少妇xxxx精品少妇偷拍| 九九久久精品视频| 色婷婷香蕉在线一区二区| 91麻豆精品国产91| 亚洲人成精品久久久久久| 黄一区二区三区| 欧美日韩国产经典色站一区二区三区| 欧美精品在线视频| 国产女人18水真多18精品一级做| 婷婷综合在线观看| 色婷婷亚洲综合| 亚洲精品一区在线观看| 亚洲国产综合视频在线观看| 视频一区视频二区中文| 色综合久久久久综合| 久久精品在线观看| 日韩电影网1区2区| 欧美日韩一区二区在线观看视频 | 欧美videossexotv100| 亚洲大片在线观看| 99精品一区二区三区| 成人激情免费网站| 在线视频你懂得一区| 麻豆精品久久精品色综合| 国产精品女人毛片| 精品视频999| 一本色道**综合亚洲精品蜜桃冫| 国产suv一区二区三区88区| 欧美一区二区三区视频| 午夜精品久久久久久久久| 亚洲免费观看高清完整版在线| 国产欧美日产一区| 成人激情图片网| 国产成人av一区| 欧美主播一区二区三区美女| 日本在线播放一区二区三区| 一区二区三区精品视频| 性久久久久久久久| 一区二区日韩av| 国产欧美在线观看一区| 欧美一区二区三区在| 91美女片黄在线| 666欧美在线视频| 在线播放中文字幕一区| 久久综合色之久久综合| 日韩欧美一二三| 精品国产一区久久| 欧美一级二级在线观看| 色欧美乱欧美15图片| 欧美军同video69gay| 中文字幕不卡在线观看| 国产一区二区女| 欧美日韩高清在线| 欧美艳星brazzers| 在线观看免费视频综合| 欧洲一区在线电影| 成人免费视频app| 色呦呦一区二区三区| 4438x成人网最大色成网站| 欧美国产国产综合| 午夜欧美一区二区三区在线播放| 亚洲美女电影在线| 国产精品嫩草影院av蜜臀| 国产精品福利一区| 亚洲va国产va欧美va观看| 日本成人中文字幕| yourporn久久国产精品| 国产成人免费在线观看不卡| 成人短视频下载| 精品久久久三级丝袜| 久久久久久亚洲综合影院红桃 | 中文字幕成人av| 国产一区二区三区久久久| 欧美精品第一页| 亚洲日本乱码在线观看| 国产一区二区三区久久悠悠色av| 99re成人在线| 国内精品伊人久久久久av一坑| 久久综合久久鬼色中文字| 久久精品av麻豆的观看方式| 日韩精品自拍偷拍| 色狠狠色狠狠综合| 国产毛片精品视频| 亚洲小说欧美激情另类| 久久午夜色播影院免费高清 | 国产在线麻豆精品观看| 自拍偷在线精品自拍偷无码专区| 日韩亚洲欧美在线观看| 91啪亚洲精品| 国产一区二区按摩在线观看| 亚洲午夜久久久久久久久电影网 | 91麻豆免费看| 国内精品视频666| 亚洲国产欧美日韩另类综合| 国产精品视频看| 欧美一区二区视频在线观看| 97精品久久久久中文字幕| 国产精品一卡二卡在线观看| 日韩av一区二区三区四区| 亚洲人成小说网站色在线| 久久嫩草精品久久久久| 欧美一区二区大片| 欧美日韩亚洲不卡| 色综合久久88色综合天天免费| 狠狠网亚洲精品| 日韩电影在线观看一区| 午夜欧美电影在线观看| 亚洲人亚洲人成电影网站色| 国产日韩欧美激情| 久久这里只有精品视频网| 欧美日韩在线观看一区二区| 欧美人伦禁忌dvd放荡欲情| 欧美无砖专区一中文字| 91久久一区二区| 色综合久久综合网97色综合| 不卡av在线免费观看| www.日韩在线| 成人免费视频一区二区| 国产精品羞羞答答xxdd| 亚洲电影一级片| 裸体一区二区三区| 黑人精品欧美一区二区蜜桃| 狠狠色丁香久久婷婷综合丁香| 老司机精品视频一区二区三区| 视频一区欧美精品| 美女视频一区在线观看| 国产91精品欧美| 91在线无精精品入口| 一本一本久久a久久精品综合麻豆| 99re热视频这里只精品| 国产精品资源站在线| 91在线观看地址| 欧美午夜一区二区三区免费大片| 欧美三级视频在线| 日韩欧美三级在线| 久久久久久久久久久久久女国产乱| 日韩色视频在线观看| 日韩视频在线你懂得| 久久久www免费人成精品| 国产精品另类一区| 亚洲综合免费观看高清完整版| 五月天婷婷综合| 国产在线精品一区二区三区不卡| 国产久卡久卡久卡久卡视频精品| 成人午夜激情影院| 成人福利在线看| 91免费看`日韩一区二区| 欧美体内she精高潮| 精品日韩欧美在线| 国产欧美一区二区精品久导航 | 懂色av一区二区三区免费观看| aaa欧美大片| 欧美精品一卡二卡| 国产日产精品一区| 亚欧色一区w666天堂| 国产在线精品一区二区| 成人午夜视频在线| 色婷婷国产精品久久包臀| 日韩精品一区二区三区四区视频| 久久精品一区八戒影视| 一区二区三区鲁丝不卡| 韩国女主播成人在线| 欧美系列亚洲系列| 国产区在线观看成人精品| 亚洲精品国产高清久久伦理二区| 麻豆成人久久精品二区三区小说| 91免费观看国产| 精品国产一区二区三区四区四| 亚洲人成精品久久久久| 精品一区二区三区av| 91同城在线观看| 久久久久久久综合狠狠综合| 亚洲女厕所小便bbb| 成人性生交大片免费看中文| 91精品啪在线观看国产60岁| 中文字幕一区二区三区乱码在线| 美国一区二区三区在线播放| 9色porny自拍视频一区二区| 精品第一国产综合精品aⅴ| 日日摸夜夜添夜夜添国产精品| av在线一区二区三区| 亚洲精品在线观看网站| 日韩av网站免费在线| 欧美精选午夜久久久乱码6080|