VC 6 MFC 美化介面方法和技巧

2021-06-08 12:30:54 字數 3134 閱讀 9875

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