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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? balloonhelp.cpp

?? 實(shí)時(shí)監(jiān)控
?? CPP
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
      sizeHdr.cx += nBtnWidth;      sizeHdr.cy = max(sizeHdr.cy, ::GetSystemMetrics(SM_CYSIZE));      if (bDraw)         pDC->DrawFrameControl(CRect(rectClient.right-nBtnWidth,0,rectClient.right,::GetSystemMetrics(SM_CYSIZE)), DFC_CAPTION, DFCS_CAPTIONCLOSE|DFCS_FLAT);      rectClient.right -= nBtnWidth;   }   // calc title size   CString strTitle;   GetWindowText(strTitle);   if ( !strTitle.IsEmpty() )   {      CFont* pOldFont = pDC->SelectObject(m_pTitleFont);      // if something is already in the header (icon or close button) leave space      if ( sizeHdr.cx > 0 )          sizeHdr.cx += nTIP_MARGIN;      CRect rectTitle(0,0,0,0);      pDC->DrawText(strTitle, &rectTitle, DT_CALCRECT | DT_NOPREFIX | DT_EXPANDTABS | DT_SINGLELINE);      sizeHdr.cx += rectTitle.Width();      sizeHdr.cy = max(sizeHdr.cy, rectTitle.Height());      // draw title      if ( bDraw )      {         pDC->SetBkMode(TRANSPARENT);         pDC->SetTextColor(m_crForeground);         pDC->DrawText(strTitle, &rectClient, DT_CENTER | DT_NOPREFIX  | DT_EXPANDTABS | DT_SINGLELINE);      }      // cleanup      pDC->SelectObject(pOldFont);   }   return sizeHdr;
}

// Calculate the dimensions and draw the balloon contents
CSize CBalloonHelp::DrawContent(CDC* pDC, int nTop, bool bDraw)
{
   CRect rectContent;   GetAnchorScreenBounds(rectContent);   rectContent.OffsetRect(-rectContent.left, -rectContent.top);   rectContent.top = nTop;   // limit to half screen width   rectContent.right -= rectContent.Width()/2;   // calc size   CFont* pOldFont = pDC->SelectObject(m_pContentFont);   if ( !m_strContent.IsEmpty() )      pDC->DrawText(m_strContent, &rectContent, DT_CALCRECT | DT_LEFT | DT_NOPREFIX | DT_EXPANDTABS | DT_WORDBREAK);   else      rectContent.SetRectEmpty();   // don't want to leave half the screen for empty strings ;)      // draw   if (bDraw)   {      pDC->SetBkMode(TRANSPARENT);      pDC->SetTextColor(m_crForeground);      pDC->DrawText(m_strContent, &rectContent, DT_LEFT | DT_NOPREFIX | DT_WORDBREAK | DT_EXPANDTABS);   }
   // cleanup   pDC->SelectObject(pOldFont);   return rectContent.Size();
}
// calculates the client size necessary based on title and contentCSize CBalloonHelp::CalcClientSize(){   ASSERT(NULL != m_hWnd);   CWindowDC dc(this);   CSize sizeHeader = CalcHeaderSize(&dc);   CSize sizeContent = CalcContentSize(&dc);   return CSize(max(sizeHeader.cx,sizeContent.cx), sizeHeader.cy + nTIP_MARGIN + sizeContent.cy);}// calculates the size for the entire window based on content sizeCSize CBalloonHelp::CalcWindowSize(){   CSize size = CalcClientSize();   size.cx += nTIP_MARGIN*2;   size.cy += nTIP_TAIL+nTIP_MARGIN*2;   //size.cx = max(size.cx, nTIP_MARGIN*2+nTIP_TAIL*4);   return size;}// this routine calculates the size and position of the window relative// to it's anchor point, and moves the window accordingly.  The region is also// created and set here.void CBalloonHelp::PositionWindow(){
   CSize sizeWnd = CalcWindowSize();   CPoint ptTail[3];   CPoint ptTopLeft(0,0);   CPoint ptBottomRight(sizeWnd.cx, sizeWnd.cy);   // force recalculation of desktop
   m_screenRect.SetRectEmpty();

   switch (GetBalloonQuadrant())   {   case BQ_TOPLEFT:      ptTopLeft.y = nTIP_TAIL;      ptTail[0].x = (sizeWnd.cx-nTIP_TAIL)/4 + nTIP_TAIL;      ptTail[0].y = nTIP_TAIL+1;      ptTail[2].x = (sizeWnd.cx-nTIP_TAIL)/4;      ptTail[2].y = ptTail[0].y;      ptTail[1].x = ptTail[2].x;      ptTail[1].y = 1;      break;   case BQ_TOPRIGHT:      ptTopLeft.y = nTIP_TAIL;      ptTail[0].x = (sizeWnd.cx-nTIP_TAIL)/4*3;      ptTail[0].y = nTIP_TAIL+1;      ptTail[2].x = (sizeWnd.cx-nTIP_TAIL)/4*3 + nTIP_TAIL;      ptTail[2].y = ptTail[0].y;      ptTail[1].x = ptTail[2].x;      ptTail[1].y = 1;      break;   case BQ_BOTTOMLEFT:      ptBottomRight.y = sizeWnd.cy-nTIP_TAIL;      ptTail[0].x = (sizeWnd.cx-nTIP_TAIL)/4 + nTIP_TAIL;      ptTail[0].y = sizeWnd.cy-nTIP_TAIL-2;      ptTail[2].x = (sizeWnd.cx-nTIP_TAIL)/4;      ptTail[2].y = ptTail[0].y;      ptTail[1].x = ptTail[2].x;      ptTail[1].y = sizeWnd.cy-2;      break;   case BQ_BOTTOMRIGHT:      ptBottomRight.y = sizeWnd.cy-nTIP_TAIL;      ptTail[0].x = (sizeWnd.cx-nTIP_TAIL)/4*3;      ptTail[0].y = sizeWnd.cy-nTIP_TAIL-2;      ptTail[2].x = (sizeWnd.cx-nTIP_TAIL)/4*3 + nTIP_TAIL;      ptTail[2].y = ptTail[0].y;      ptTail[1].x = ptTail[2].x;      ptTail[1].y = sizeWnd.cy-2;      break;   }   // adjust for very narrow balloons   if ( ptTail[0].x < nTIP_MARGIN )      ptTail[0].x = nTIP_MARGIN;   if ( ptTail[0].x > sizeWnd.cx - nTIP_MARGIN )      ptTail[0].x = sizeWnd.cx - nTIP_MARGIN;   if ( ptTail[1].x < nTIP_MARGIN )      ptTail[1].x = nTIP_MARGIN;   if ( ptTail[1].x > sizeWnd.cx - nTIP_MARGIN )      ptTail[1].x = sizeWnd.cx - nTIP_MARGIN;   if ( ptTail[2].x < nTIP_MARGIN )      ptTail[2].x = nTIP_MARGIN;   if ( ptTail[2].x > sizeWnd.cx - nTIP_MARGIN )      ptTail[2].x = sizeWnd.cx - nTIP_MARGIN;   // get window position   CPoint ptAnchor = GetAnchorPoint();   CPoint ptOffs(ptAnchor.x - ptTail[1].x, ptAnchor.y - ptTail[1].y);   // adjust position so all is visible   CRect rectScreen;   GetAnchorScreenBounds(rectScreen);   int nAdjustX = 0;   int nAdjustY = 0;   if ( ptOffs.x < rectScreen.left )      nAdjustX = rectScreen.left-ptOffs.x;   else if ( ptOffs.x + sizeWnd.cx >= rectScreen.right )      nAdjustX = rectScreen.right - (ptOffs.x + sizeWnd.cx);   if ( ptOffs.y + nTIP_TAIL < rectScreen.top )      nAdjustY = rectScreen.top - (ptOffs.y + nTIP_TAIL);   else if ( ptOffs.y + sizeWnd.cy - nTIP_TAIL >= rectScreen.bottom )      nAdjustY = rectScreen.bottom - (ptOffs.y + sizeWnd.cy - nTIP_TAIL);   // reposition tail   // uncomment two commented lines below to move entire tail    // instead of just anchor point   //ptTail[0].x -= nAdjustX;   ptTail[1].x -= nAdjustX;   //ptTail[2].x -= nAdjustX;   ptOffs.x    += nAdjustX;   ptOffs.y    += nAdjustY;   // place window
   MoveWindow(ptOffs.x, ptOffs.y, sizeWnd.cx, sizeWnd.cy, TRUE);

   // apply region
   CRgn region;   CRgn regionRound;   CRgn regionComplete;   region.CreatePolygonRgn(&ptTail[0], 3, ALTERNATE);   regionRound.CreateRoundRectRgn(ptTopLeft.x,ptTopLeft.y,ptBottomRight.x,ptBottomRight.y,nTIP_MARGIN*3,nTIP_MARGIN*3);   regionComplete.CreateRectRgn(0,0,1,1);   regionComplete.CombineRgn(&region, &regionRound, RGN_OR);   if ( NULL == m_rgnComplete.m_hObject )      m_rgnComplete.CreateRectRgn(0,0,1,1);

   if ( !m_rgnComplete.EqualRgn(&regionComplete) )
   {
      m_rgnComplete.CopyRgn(&regionComplete);      SetWindowRgn((HRGN)regionComplete.Detach(), TRUE);

      // There is a bug with layered windows and NC changes in Win2k
      // As a workaround, redraw the entire window if the NC area changed.
      // Changing the anchor point is the ONLY thing that will change the
      // position of the client area relative to the window during normal
      // operation.
      RedrawWindow(NULL, NULL, RDW_UPDATENOW| RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
   }
}// Returns the class ATOM for a BalloonHelp control.  Registers the class first, if necessary.ATOM CBalloonHelp::GetClassAtom(BOOL bShadowed){   if ( NULL == s_ClassAtom )   {      WNDCLASSEX wcx;       // Fill in the window class structure with parameters       // that describe the main window.       wcx.cbSize = sizeof(wcx);                 // size of structure       wcx.style = CS_DBLCLKS|CS_SAVEBITS         |CS_DROPSHADOW;                        // notify of double clicks, save screen under, show dropshadow      wcx.lpfnWndProc = AfxWndProc;             // points to window procedure       wcx.cbClsExtra = 0;                       // no extra class memory       wcx.cbWndExtra = 0;                       // no extra window memory       wcx.hInstance = AfxGetInstanceHandle();   // handle to instance       wcx.hIcon = NULL;                         // no app. icon       wcx.hCursor = LoadCursor(NULL,IDC_ARROW); // predefined arrow       wcx.hbrBackground = ::GetSysColorBrush(COLOR_WINDOW);                 // no background brush       wcx.lpszMenuName =  NULL;                 // no menu resource       wcx.lpszClassName = _T("BalloonHelpClassDS"); // name of window class       wcx.hIconSm = NULL;                       // no small class icon      // Register the window class (this may not work if dropshadows are not supported)      s_ClassAtomShadowed = RegisterClassEx(&wcx);      // Register shadow-less class      wcx.style &= ~CS_DROPSHADOW;      wcx.lpszClassName = _T("BalloonHelpClass");      s_ClassAtom = RegisterClassEx(&wcx);   }   if ( bShadowed && NULL != s_ClassAtomShadowed )      return s_ClassAtomShadowed;   return s_ClassAtom;}

// Displays the balloon on the screen, performing fade-in if enabled.
void CBalloonHelp::ShowBalloon(void)
{
   ShowWindow(SW_SHOWNOACTIVATE);
   if ( !(m_unOptions&unDELAY_CLOSE) )
      SetTimeout(m_unTimeout);     // start close timer}
// Removes the balloon from the screen, performing the fade-out if enabled
void CBalloonHelp::HideBalloon(void)
{
   if ( m_unOptions&unDELAY_CLOSE )
   {
      m_unOptions &= ~(unDELAY_CLOSE|unCLOSE_ON_ANYTHING);  // close only via timer or button
      SetTimeout(m_unTimeout);     // start close timer      return;   }
   ShowWindow( SW_HIDE );
   if ( GetCapture() == this ) 
      ReleaseCapture();
   DestroyWindow();
}

//
// Keyboard hook
//

void CBalloonHelp::SetKeyboardHook()
{
   if ( NULL==m_hKeyboardHook )
   {
      m_hKeyboardHook = ::SetWindowsHookEx(WH_KEYBOARD,
         (HOOKPROC)BHKeybHookThunk<CBalloonHelp>::GetThunk(),
         NULL, ::GetCurrentThreadId());
   }
}

void CBalloonHelp::RemoveKeyboardHook()
{
   if ( NULL!=m_hKeyboardHook )
   {
      ::UnhookWindowsHookEx(m_hKeyboardHook);
      m_hKeyboardHook=NULL;
   }
}


//
// Mouse hook
//

void CBalloonHelp::SetMouseHook()
{
   if ( NULL==m_hMouseHook )
   {
      m_hMouseHook = ::SetWindowsHookEx(WH_MOUSE,
         (HOOKPROC)BHMouseHookThunk<CBalloonHelp>::GetThunk(),
         NULL, ::GetCurrentThreadId());
   }
}

void CBalloonHelp::RemoveMouseHook()
{
   if ( NULL!=m_hMouseHook )
   {
      ::UnhookWindowsHookEx(m_hMouseHook);
      m_hMouseHook=NULL;
   }
}

//
// Call Window Return hook
//

void CBalloonHelp::SetCallWndRetHook()
{
   if ( NULL==m_hCallWndRetHook )
   {
      m_hCallWndRetHook = ::SetWindowsHookEx(WH_CALLWNDPROCRET,
         (HOOKPROC)BHCallWndRetHookThunk<CBalloonHelp>::GetThunk(),
         NULL, ::GetCurrentThreadId());
   }
}

void CBalloonHelp::RemoveCallWndRetHook()
{
   if ( NULL!=m_hCallWndRetHook )
   {
      ::UnhookWindowsHookEx(m_hCallWndRetHook);
      m_hCallWndRetHook=NULL;
   }
}

/////////////////////////////////////////////////////////////////////////////// CBalloonHelp message handlersBEGIN_MESSAGE_MAP(CBalloonHelp, CWnd)   ON_WM_ERASEBKGND()   ON_WM_PAINT()   ON_WM_NCPAINT()   ON_WM_LBUTTONDOWN()   ON_WM_LBUTTONUP()   ON_WM_NCCALCSIZE()

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.亚洲在线| 欧美激情综合五月色丁香小说| 色999日韩国产欧美一区二区| 成人精品一区二区三区中文字幕| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲一区在线观看视频| 亚洲天堂av一区| 亚洲啪啪综合av一区二区三区| 国产精品久久久久久久久果冻传媒| 国产欧美一二三区| 国产精品久久久久久久久图文区| ㊣最新国产の精品bt伙计久久| 中文字幕+乱码+中文字幕一区| 欧美激情一二三区| 性感美女久久精品| 亚洲一区免费观看| 亚洲午夜精品在线| 午夜av电影一区| 日本怡春院一区二区| 国产一区视频在线看| 国产精品系列在线播放| av激情成人网| 欧美日韩在线免费视频| 日韩一区二区免费在线电影| 精品电影一区二区三区 | 免费视频一区二区| 国产精品亚洲一区二区三区在线| 国产精品99久久久久久有的能看| 91在线看国产| 欧美性猛片xxxx免费看久爱| 欧美另类久久久品| 久久亚洲免费视频| 亚洲天堂成人网| 日韩精品电影在线| 国产精品一级二级三级| 色老汉av一区二区三区| 日韩一区二区三区四区五区六区| 欧美激情一区二区三区全黄| 亚洲激情六月丁香| 久久99最新地址| thepron国产精品| 欧美日韩综合一区| 久久精品男人的天堂| 亚洲伊人色欲综合网| 国内一区二区在线| 91在线视频免费观看| 日韩免费电影一区| 亚洲人亚洲人成电影网站色| 一区二区三区加勒比av| 蜜桃久久久久久久| 成人精品视频一区二区三区尤物| 欧美猛男超大videosgay| 欧美激情一区在线| 美国av一区二区| 99r精品视频| 欧美α欧美αv大片| 亚洲黄色小视频| 国产麻豆精品久久一二三| 欧美色老头old∨ideo| 久久久久久9999| 亚洲国产日日夜夜| 99精品久久只有精品| 欧美一卡2卡三卡4卡5免费| 国产精品久久午夜| 精品一区二区三区影院在线午夜| 色欧美片视频在线观看| 欧美激情在线一区二区| 麻豆精品新av中文字幕| 色噜噜狠狠色综合欧洲selulu | 欧美aaaaaa午夜精品| 色视频一区二区| 国产精品嫩草久久久久| 麻豆91免费看| 88在线观看91蜜桃国自产| 中文字幕一区二区三区不卡在线| 极品尤物av久久免费看| 欧美日韩电影一区| 综合激情网...| 懂色av一区二区三区蜜臀| 日韩一级黄色片| 亚洲成av人在线观看| 色婷婷激情一区二区三区| 国产精品初高中害羞小美女文| 狠狠久久亚洲欧美| 日韩精品一区在线观看| 日本在线观看不卡视频| 欧美日韩中文一区| 亚洲成人av在线电影| 色吊一区二区三区| 亚洲女同ⅹxx女同tv| av资源站一区| 国产精品传媒在线| av动漫一区二区| 国产精品美女久久久久久久久 | 国产成a人亚洲精| 久久久久久久综合| 国产专区欧美精品| 久久婷婷久久一区二区三区| 九色porny丨国产精品| 日韩一区二区三区av| 奇米一区二区三区av| 91精品国产91久久久久久一区二区 | 91精品国产欧美一区二区成人| 亚洲综合色视频| 欧美日韩国产免费一区二区| 亚洲电影在线播放| 欧美男男青年gay1069videost| 丝袜亚洲另类欧美综合| 7777精品伊人久久久大香线蕉最新版| 亚洲国产美女搞黄色| 337p亚洲精品色噜噜| 麻豆国产一区二区| 久久精品亚洲一区二区三区浴池 | 波多野结衣中文字幕一区| 国产精品久久久久一区二区三区 | 久久先锋资源网| 国产麻豆精品theporn| 中文字幕av免费专区久久| 91一区二区三区在线观看| 亚洲综合小说图片| 91精品国产91综合久久蜜臀| 狠狠网亚洲精品| 中文字幕第一区第二区| 色诱视频网站一区| 天天爽夜夜爽夜夜爽精品视频| 日韩美女天天操| 丰满白嫩尤物一区二区| 亚洲免费毛片网站| 538prom精品视频线放| 久久疯狂做爰流白浆xx| 国产拍欧美日韩视频二区| 91麻豆文化传媒在线观看| 午夜精品久久久久久久99樱桃 | 夜夜嗨av一区二区三区| 欧美美女网站色| 国产一区不卡在线| 亚洲三级小视频| 91麻豆精品国产| 国产成人在线看| 亚洲综合无码一区二区| 亚洲欧美影音先锋| 亚洲小说春色综合另类电影| 专区另类欧美日韩| 在线国产电影不卡| 美国毛片一区二区| 最新中文字幕一区二区三区| 欧美日韩国产免费一区二区| 国产精品羞羞答答xxdd| 一区二区三区四区在线免费观看 | 亚洲欧洲制服丝袜| 日韩午夜在线观看| 91在线精品秘密一区二区| 日韩av一级电影| 一区在线播放视频| 日韩欧美美女一区二区三区| av激情成人网| 国产在线视视频有精品| 亚洲国产欧美一区二区三区丁香婷| 久久色.com| 欧美日韩高清在线| 成人a免费在线看| 精品夜夜嗨av一区二区三区| 亚洲精品乱码久久久久久| 久久精品一区二区三区不卡| 欧美群妇大交群的观看方式| 不卡一二三区首页| 另类小说图片综合网| 中文字幕字幕中文在线中不卡视频| 日韩欧美成人激情| 欧美日韩在线免费视频| 成人毛片老司机大片| 捆绑紧缚一区二区三区视频 | 91免费在线看| 久久av老司机精品网站导航| 亚洲成人av福利| 国产精品国产三级国产aⅴ入口 | 久久99精品国产.久久久久久| 一区二区在线观看视频在线观看| 国产日韩av一区二区| 日韩欧美成人一区二区| 欧美日韩一区二区欧美激情| 91美女在线观看| 国产91综合网| 国产在线精品国自产拍免费| 日韩精品电影一区亚洲| 亚洲综合免费观看高清在线观看| 欧美激情资源网| 久久久综合精品| 精品国产成人在线影院 | 亚洲精品伦理在线| 国产精品久久久久影院| 日本一区二区三区四区| 精品国产在天天线2019| 欧美一区日本一区韩国一区| 欧美日韩在线电影| 欧美人狂配大交3d怪物一区| 欧美性猛交一区二区三区精品| 91欧美激情一区二区三区成人| av一区二区三区黑人| 高清shemale亚洲人妖|