前段時間一直在想怎麼樣能讓窗口變得更漂亮一點,更加吸引人呢?在網上也看到了不少高手們的做法,但對於我這種不喜歡太復雜的人來說,我不是很喜歡那樣寫代碼,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]