讓視窗輕而易舉變漂亮

2021-04-13 00:15:25 字數 2652 閱讀 8316

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

介面 VC 6 MFC讓視窗輕而易舉變漂亮

一 介面分析 主要是把資料放到合適的位置,並且獲取視窗的pdc,用pdc stretchblt 函式顯示,這裡面建立了乙個相容的dc,先把資料選擇到這裡面,再用strtchblt 拷貝相容dc。最後是乙個乙個資料塊進行顯示。二 互動分析 dlg對話方塊中,響應wm ncmousemove訊息 wm ...

pyQt 讓視窗跳到最前端

本來想實現在程式執行結束後工作列閃爍提醒的效果,但是沒找到合適的教程。退而求其次,寫乙個程式執行結束後視窗跳到最前端 非一直置頂 的效果吧。我個人感覺pyqt的教程都挺難找的 害。from pyqt5 import qtcore 視窗跳到最前端 yourwindow.activatewindow y...

HyperDock,讓Mac的視窗飛

三年前寫了一篇文章,介紹了windows 7下的aero效果,其實最終是想引出來寫mac os上能產生類似功能的hyperdock應用程式,可惜這一拖,就拖到連windows 10都快要發布了。沒有關心windows是否有延續著非常華麗又實用的功能,畢竟過去4年裡,mac才是工作和日常中一直使用的電...