ÕÒÂÛÎÄÍø > ¼ÆËã»úÂÛÎÄ > ¼ÆËã»úÀíÂÛ >

ÓÃVC++6.0Ϊ¶Ô»°¿òÌí¼Ó×îС»¯°´Å¥ºÍÌáʾÌõ(2)


3      Ö÷ÒªµÄ³ÌÐò´úÂë
¢Å ÔÚ¶Ô»°¿òÀàÖж¨ÒåÏàÓ¦µÄ±äÁ¿ºÍº¯ÊýÉùÃ÷
class CMinButtonDlg : public CDialog
{
         ¡­¡­¡­¡­
    public:
     CRect m_rtButtMin; //¼Ç¼×îС»¯°´Å¥Î»ÖÃ
     void DrawButton(); //»æÖÆ×îС»¯°´Å¥
     BOOL m_BMPPressed;//×îС»¯°´Å¥×´Ì¬±êÖ¾
     CRect m_ButtMinTips;//¼Ç¼×îС»¯°´Å¥ÇøÓò
protected:
  CToolTips m_ToolTip;//¶¨Ò幤¾ßÌáʾÌõ¿Ø¼þ±äÁ¿
  void GetMinButRect();//»ñÈ¡×îС»¯°´Å¥ËùÔÚÇøÓò
  //ÏûÏ¢´¦Àíº¯Êý
afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
      afx_msg void OnNcPaint();
      afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
      afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
¡­¡­¡­¡­
}£»
¢Æ ¶Ô»°¿òÀàÖÐÈý¸öÏûÏ¢´¦Àíº¯Êý¶¨ÒåÈçÏ£º
//¶ÔÓ¦ÏûÏ¢WM_NCPAINTµÄÏûÏ¢´¦Àíº¯Êý
void CMinButtonDlg::OnNcPaint()
{
     CDialog::OnNcPaint();
     DrawButton(); //»æÖÆ×îС»¯°´Å¥
     }
//¶ÔÓ¦ÏûÏ¢WM_ACTIVATEµÄÏûÏ¢´¦Àíº¯Êý
void CMinButtonDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
     CDialog::OnActivate(nState, pWndOther, bMinimized);
     DrawButton(); //»æÖÆ×îС»¯°´Å¥
     }
//¶ÔÓ¦ÏûÏ¢WM_NCMOUSEMOVEµÄÏûÏ¢´¦Àíº¯Êý
void CMinButtonDlg::OnNcMouseMove(UINT nHitTest, CPoint point)
{
     DrawButton(); //»æÖÆ×îС»¯°´
     CDialog::OnNcMouseMove(nHitTest, point);
}
¢Ç »æÖÆ×îС»¯°´Å¥µÄº¯Êý
void CMinButtonDlg::DrawButton()
{
    
     CDC* pDC = GetWindowDC();
     CDC* pMemDC=new CDC;
     CBitmap *pBitmap1=new CBitmap; 
     CBitmap *pBitmap2=new CBitmap;
     CBitmap *pOldBitmap;
     CRect rtWnd, rtButtons, rtTitle;
     //´´½¨Ò»¸öÄÚ´æÉ豸»·¾³
     pMemDC->CreateCompatibleDC(pDC);
     if(!pDC) return;
     GetWindowRect(&rtWnd);
     //È¡µÃ±êÌâÀ¸µÄ¾ØÐÎ
     rtTitle.left = GetSystemMetrics(SM_CXFRAME);
     rtTitle.top = GetSystemMetrics(SM_CYFRAME);
     rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
     rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);
     //¼ÆËã×îС»¯°´Å¥µÄλÖã¬Î»Í¼´óСΪ15X15
     rtButtons.top=rtTitle.top+1;
     rtButtons.bottom=rtButtons.top+15;
     rtButtons.right = rtTitle.right-20;
     rtButtons.left = rtButtons.right-15;

     m_rtButtMin = rtButtons;
     pBitmap1->LoadBitmap(IDB_BITMAP1); //µ÷ÈëÕý³£×´Ì¬°´Å¥µÄλͼ
     pBitmap2->LoadBitmap(IDB_BITMAP2);  //µ÷Èë°´Å¥°´ÏÂ״̬µÄλͼ
     m_rtButtMin.OffsetRect(rtWnd.TopLeft());//¼Ç¼×îС»¯°´Å¥µÄλÖÃ
     //½«°´Å¥Î»Í¼µ÷ÈëÄÚ´æÉ豸»·¾³ÖУ¬m_BMPPressedΪTRUE
//µ÷ÈëÕý³£×´Ì¬°´Å¥µÄλͼ
     pOldBitmap=pMemDC->SelectObject(m_BMPPressed ? pBitmap1: pBitmap2);
     //½«°´Å¥Î»Í¼¸´ÖƵ½Êµ¼ÊµÄÄÚ´æÉ豸»·¾³ÖÐ
     pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(),
           rtButtons.Height(), pMemDC, 0, 0, SRCCOPY);
     pMemDC->SelectObject(pOldBitmap);//»Ö¸´Ô­À´µÄÄÚ´æÉ豸»·¾³
 //ÊÍ·Å×ÊÔ´
     ReleaseDC(pMemDC);
     ReleaseDC(pDC);
     delete pMemDC;
     delete pBitmap1;
     delete pBitmap2;
     }
¢È ¶ÔÓ¦Êó±ê×ó¼üµÄWM_NCLBUTTONDOWNÏûÏ¢´¦Àíº¯Êý
void CMinButtonDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
     CDialog::OnNcLButtonDown(nHitTest, point);
     //¼ì²âÊÇ·ñÔÚ×îС»¯°´Å¥ÇøÓòÄÚ°´Ï°´Å¥
     if (m_rtButtMin.PtInRect(point))
     {
           m_BMPPressed=FALSE;//»æÖư´Å¥°´ÏÂʱµÄ״̬
           DrawButton(); //»æÖÆ×îС»¯°´Å¥
           m_BMPPressed=TRUE;//»æÖư´Å¥µÄÕý³£×´Ì¬
           SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.x, point.y));//·¢ËÍ×îС»¯ÏûÏ¢
     }
     }
¢É //ÔÚ×îС»¯°´Å¥ÇøÓòʵÏÖÌáʾÎı¾
BOOL CToolTips::AddToolTip( UINT nID, LPRECT lpRect, LPCTSTR lpszText  )
{
     TOOLINFO Tips;
     memset(&Tips, 0, sizeof(TOOLINFO));
     Tips.cbSize = sizeof(TOOLINFO);
     Tips.hwnd = GetOwner()->GetSafeHwnd();
     Tips.uFlags = TTF_SUBCLASS;
     Tips.uId = nID;
     memcpy(&Tips.rect, lpRect, sizeof(RECT));
     Tips.lpszText = (LPSTR)lpszText
     return (BOOL)SendMessage(TTM_ADDTOOL, 0, (LPARAM)&Tips);
}
¢Ê ÔÚ¶Ô»°¿ò³õʼ»¯º¯ÊýOnInitDialog()ÖÐÌíÏÂÁдúÂ룺
m_ToolTip.Create(this,TTS_ALWAYSTIP);//´´½¨¹¤¾ßÌáʾ¿Ø¼þ£¬TTS_ALWAYSTIP±íʾ£¬//²»ÂۿؼþËùÊô´°ÌåÊÇ·ñ»î¶¯£¬ÌáʾÌõʼÖÕÓÐЧ
     GetMinButRect();
     ScreenToClient(&m_ButtMinTips);//ÆÁÄ»×ø±êת»»Îª´°Ìå×ø±ê
     m_ToolTip.AddToolTip(1,&m_ButtMinTips,"×îС»¯");
4      ½áÊøÓï
  ʵÀý³ÌÐòµÄ²âÊÔ»·¾³ÎªWindows 98¡¢P¢ò350£¬Ð§¹ûÁ¼ºÃ¡£

¹²2Ò³: ÉÏÒ»Ò³ [1] 2


ÈëÇÖ¼ì²âϵͳÑо¿
ÂÛ¹ú¼ÒÐÅÏ¢»¯Õ½ÂÔ
¹¤É̹ÜÀí | ¹¤¿ÆÂÛÎÄ | ²ÆÎñ¹ÜÀí | ¹ÜÀíѧ | ¹«¹²¹ÜÀí | ²ÆÕþ˰ÊÕ | ֤ȯ½ðÈÚ | »á¼ÆÉó¼Æ | ¼ÆËã»ú | ·¨ÂÉÂÛÎÄ | ҽҩѧ | ººÓïÑÔÎÄѧ
Éç»áÂÛÎÄ | ¹¤¿ÆÂÛÎÄ | Àí¿ÆÂÛÎÄ | ÎÄ»¯ÂÛÎÄ | ÒÕÊõÂÛÎÄ | ÎÄѧÂÛÎÄ | ÕÜѧÂÛÎÄ | ÕþÖÎÂÛÎÄ | Ó¢ÓïÂÛÎÄ | д×÷Ö¸µ¼ | ¼ÆËã»úÓ¦ÓÃ
www.zlunwen.com ÕÒÂÛÎÄÍø ® °æÈ¨ËùÓÐ ÍøÕ¾µØÍ¼