程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 讓VC窗口輕而易舉變漂亮

讓VC窗口輕而易舉變漂亮

編輯:關於VC++

前段時間一直在想怎麼樣能讓窗口變得更漂亮一點,更加吸引人呢?在網上也看到了不少高手們的做法,但對於我這種不喜歡太復雜的人來說,我不是很喜歡那樣寫代碼,GetSystemMetrics函數來得到各個邊框的長度或寬度。。。。沒幾下,我的頭就暈了,在查了許多資料以及實驗後,我終於找到了一種比較簡單的美化窗口的方法,現在就拿出來獻丑一下,覺得不好的就請跳過去吧~~

大家請看這張圖:

其實這張圖已經很直觀的表達了窗口內部的布局,有了這張圖你覺得美化窗口還難嗎?想怎麼好看就可以怎麼好看….<注:這張圖是從網上搜索得來,十分感謝此作者,為我們提供了方便,在這裡我只是拿這張圖做一下參考>

//取得標題欄的位置
rtTitle.left = 6;
rtTitle.top = 0;
rtTitle.right = rtWnd.right - rtWnd.left - 6;
rtTitle.bottom = 30;
//計算最小化按鈕的位置
m_rtButtMin.left = rtWnd.right - rtWnd.left - 66;
m_rtButtMin.top= 0;
m_rtButtMin.right = rtWnd.right - rtWnd.left - 46;
m_rtButtMin.bottom = 30;

//計算最大化按鈕的位置
m_rtButtMax.left = rtWnd.right - rtWnd.left - 46;
m_rtButtMax.top = 0;
m_rtButtMax.right = rtWnd.right - rtWnd.left - 26;
m_rtButtMax.bottom = 30;
//計算關閉按鈕的位置
m_rtButtExit.left = rtWnd.right - rtWnd.left - 26;
m_rtButtExit.top = 0;
m_rtButtExit.right = rtWnd.right - rtWnd.left-6;
m_rtButtExit.bottom = 30;

有了它們的位置美化它們就容易了://准備畫圖
     CBitmap* pBitmap = new CBitmap;
     BITMAP BmpInfo;
     CBitmap* pOldBitmap;
     CDC* pDisplayMemDC=new CDC;
     pDisplayMemDC->CreateCompatibleDC(pDC);

     //重畫標題欄
     pBitmap->LoadBitmap(IDB_TITLE_TOP);
     pBitmap->GetBitmap(&BmpInfo);
     pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
     pDC->StretchBlt(6,0, rtWnd.right-rtWnd.left-12,
       30,
       pDisplayMemDC, 0, 0,
       BmpInfo.bmWidth,
       BmpInfo.bmHeight,SRCCOPY);
     pDisplayMemDC->SelectObject(pOldBitmap);
     pBitmap->DeleteObject();
     //寫上標題
     WriteCaption(m_CaptionColor,m_Caption);
//重畫兩個標題欄兩邊的小邊框
     pBitmap->LoadBitmap(IDB_DOWN);
     pBitmap->GetBitmap(&BmpInfo);
     pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
     //左邊的
     pDC->StretchBlt(0,0,6,30,
       pDisplayMemDC,0, 0,
       BmpInfo.bmWidth,
       BmpInfo.bmHeight,
       SRCCOPY);
//右邊的
     pDC->StretchBlt(rtWnd.right-rtWnd.left-6,0,6,30,
       pDisplayMemDC,0,0,
       BmpInfo.bmWidth,
       BmpInfo.bmHeight,
       SRCCOPY);
     pDisplayMemDC->SelectObject(pOldBitmap);
     pBitmap->DeleteObject();
//重畫功能button

     pBitmap->LoadBitmap(IDB_NORMAL);
     pBitmap->GetBitmap(&BmpInfo);
     pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
     pDC->StretchBlt(m_rtButtMin.left,
       m_rtButtMin.top+4,
       60, 21, pDisplayMemDC,
       0, 0, BmpInfo.bmWidth,
       BmpInfo.bmHeight,SRCCOPY);
     pDisplayMemDC->SelectObject(pOldBitmap);
     pBitmap->DeleteObject();

這樣,我們想在窗口的什麼位置上貼什麼我們就可以很容易的做到。如果大家覺得這樣比較容易的話,那我也就滿意了。如果您有什麼意見或建議的話可以和我聯系,我的QQ:329473663 E-mail:[email protected]

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved