前段時間一直在想怎麼樣能讓視窗變得更漂亮一點,更加吸引人呢?在網上也看到了不少高手們的做法,但對於我這種不喜歡太複雜的人來說,我不是很喜歡那樣寫**,getsystemmetrics函式來得到各個邊框的長度或寬度。。。。沒幾下,我的頭就暈了,在查了許多資料以及實驗後,我終於找到了一種比較簡單的美化視窗的方法,現在就拿出來獻醜一下,覺得不好的就請跳過去吧~~大家請看這張圖:
其實這張圖已經很直觀的表達了視窗內部的布局,有了這張圖你覺得美化視窗還難嗎?想怎麼好看就可以怎麼好看….《注:這張圖是從網上搜尋得來,十分感謝此作者,為我們提供了方便,在這裡我只是拿這張圖做一下參考》1. //取得標題欄的位置
2. rttitle.left = 6;
3. rttitle.top = 0;
4. rttitle.right = rtwnd.right - rtwnd.left - 6;
5. rttitle.bottom = 30;
6. 7. //計算最小化按鈕的位置
8. m_rtbuttmin.left = rtwnd.right - rtwnd.left - 66;
9. m_rtbuttmin.top= 0;
10. m_rtbuttmin.right = rtwnd.right - rtwnd.left - 46;
11. m_rtbuttmin.bottom = 30;
12.
13. //計算最大化按鈕的位置
14. m_rtbuttmax.left = rtwnd.right - rtwnd.left - 46;
15. m_rtbuttmax.top = 0;
16. m_rtbuttmax.right = rtwnd.right - rtwnd.left - 26;
17. m_rtbuttmax.bottom = 30;
18.
19. //計算關閉按鈕的位置
20. m_rtbuttexit.left = rtwnd.right - rtwnd.left - 26;
21. m_rtbuttexit.top = 0;
22. m_rtbuttexit.right = rtwnd.right - rtwnd.left-6;
23. m_rtbuttexit.bottom = 30;
複製**
有了它們的位置美化它們就容易了:
1. //準備畫圖
2. cbitmap* pbitmap = new cbitmap;
3. bitmap bmpinfo;
4. cbitmap* poldbitmap;
5. cdc* pdisplaymemdc=new cdc;
6. pdisplaymemdc->createcompatibledc(pdc);
7. 8.
9. //重畫標題欄
10. pbitmap->loadbitmap(idb_title_top);
11. pbitmap->getbitmap(&bmpinfo);
12. poldbitmap=(cbitmap*)pdisplaymemdc->selectobject(pbitmap);
13. pdc->stretchblt(6,0, rtwnd.right-rtwnd.left-12,
14. 30,
15. pdisplaymemdc, 0, 0,
16. bmpinfo.bmwidth,
17. bmpinfo.bmheight,srccopy);
18. pdisplaymemdc->selectobject(poldbitmap);
19. pbitmap->deleteobject();
20.
21. //寫上標題
22. writecaption(m_captioncolor,m_caption);
23.
24. //重畫兩個標題欄兩邊的小邊框
25. pbitmap->loadbitmap(idb_down);
26. pbitmap->getbitmap(&bmpinfo);
27. poldbitmap=(cbitmap*)pdisplaymemdc->selectobject(pbitmap);
28. //左邊的
29. pdc->stretchblt(0,0,6,30,
30. pdisplaymemdc,0, 0,
31. bmpinfo.bmwidth,
32. bmpinfo.bmheight,
33. srccopy);
34. //右邊的
35. pdc->stretchblt(rtwnd.right-rtwnd.left-6,0,6,30,
36. pdisplaymemdc,0,0,
37. bmpinfo.bmwidth,
38. bmpinfo.bmheight,
39. srccopy);
40. pdisplaymemdc->selectobject(poldbitmap);
41. pbitmap->deleteobject();
42.
43. //重畫功能button
44.
45. pbitmap->loadbitmap(idb_normal);
46. pbitmap->getbitmap(&bmpinfo);
47. poldbitmap=(cbitmap*)pdisplaymemdc->selectobject(pbitmap);
48. pdc->stretchblt(m_rtbuttmin.left,
49. m_rtbuttmin.top+4,
50. 60, 21, pdisplaymemdc,
51. 0, 0, bmpinfo.bmwidth,
52. bmpinfo.bmheight,srccopy);
53. pdisplaymemdc->selectobject(poldbitmap);
54. pbitmap->deleteobject();
這樣,我們想在視窗的什麼位置上貼什麼我們就可以很容易的做到。如果大家覺得這樣比較容易的話,那我也就滿意了。
介面 VC 6 MFC讓視窗輕而易舉變漂亮
一 介面分析 主要是把資料放到合適的位置,並且獲取視窗的pdc,用pdc stretchblt 函式顯示,這裡面建立了乙個相容的dc,先把資料選擇到這裡面,再用strtchblt 拷貝相容dc。最後是乙個乙個資料塊進行顯示。二 互動分析 dlg對話方塊中,響應wm ncmousemove訊息 wm ...
如何在VC6 MFC中使用GDI
gdi 可應用於二維向量圖象,柵格圖象及排版,是為c c 程式設計師而設計的表現為c 類而存在的介面,能用於一切基於windows的應用中。作為gdi的後繼者,gdi 在gdi中增加了新功能,如文字的反鋸齒,漸變筆刷,alpha溶合 也優化了gdi許多已有的功能。此外,gdi 改變了程式設計模式,使...
VC 除錯方法和技巧
vc 除錯方法和技巧 便於除錯的 風格 1.不用全域性變數 2.所有變數都要初始化,成員變數在建構函式中初始化 3.盡量使用const 4.詳盡的注釋。vc 編譯選項 1.總是使用 w4警告級別 2.在除錯版本裡總是使用 gz編譯選項,用來發現在release版本中才有的錯誤 3.沒有警告的編譯 保...