VC個性化視窗介面設計

2021-04-13 02:54:44 字數 2169 閱讀 4842

vc下有時需要製作個性化的視窗介面,用介面庫又比較繁瑣,而且有些介面庫還必須收費才能使用,這裡我提供乙個簡單且有效的製作個性化介面的方法。

由嚮導生成乙個基於對話方塊的應用程式框架,把對話方塊模板的

border

屬性改為

none

,也就是沒有邊框和標題欄。從

cdialog

派生乙個類,命名為

ccustomdlg

。首先我們要建立不規則視窗的介面,要用到以下函式,

int setwindowrgn( hrgn hrgn, bool bredraw );

這個函式用來設定應用程式視窗的視窗區域,在本文的例子中我們使用

createroundrectrgn

建立乙個圓角矩形區域,然後再呼叫

setwindowrgn

設定視窗區域。

createroundrectrgn

的原型如下:

bool createroundrectrgn( int x1, int y1, int x2, int y2, int x3, int y3 );

具體**如下:

bool ccustomdlgdlg::oninitdialog()

因為對話方塊已經設定了

none border

屬性,所以

getclientrect(&rectframe)

得到的就為對話方塊模板整個視窗大小,然後再建立圓角矩形,注意建立圓角矩形的時候要注意第三,第四個引數都要加

1(後面會講原因)。

接下來,對映

wm_erasebkgnd

訊息來改變背景

,需手工加入

on_wm_erasebkgnd()

,同時不要忘了在標頭檔案中加入

afx_msg bool onerasebkgnd(cdc *pdc);

編輯處理函式:

bool ccustomdlgdlg::onerasebkgnd(cdc *pdc)

pdc->roundrect(&rect, cpoint(30, 30));

預設是用黑筆畫矩形,到這裡應該知道上面的第三,第四個引數為什麼要加

1了,因為預設黑筆的寬度就為

1個畫素單位,

roundrect

實際畫出的矩形的長度和寬度都多

1,大家可能會想,為什麼不用

rectframe.left減1

,和rectframe.top減1

這種方法呢?它也會使長度和寬度都多

1啊,問題在於

rectframe.left, rectframe.top都為0

,減1就都為-1,用

createroundrectrgn

建立區域時值又會變為

0,這樣長度和寬度還是沒有增加。

再接下來,加入一

cbrush

型別的成員變數

m_brbrush

,在建構函式中加入

m_brbrush.createsolidbrush(rgb(239,243,255));

用classwizard

對映wm_ctlcolor訊息,

並編輯**。作用是改變對話方塊中控制項的顏色以使對話方塊背景相符

,不過不能用此法改變按鈕的顏色,按鈕用自繪來改變顏色,這方面內容本文就不介紹了,網上有很多此類文章。

hbrush ccustomdlgdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)

// todo: return a different brush if the default is not desired

return hbr; }

接著,對映

wm_nchittest

訊息,需手工加入,

on_wm_nchittest()

,同時不要忘了在標頭檔案加入

afx_msg uint onnchittest(cpoint point);

編輯處理函式:

uint ccustomdlgdlg::onnchittest(cpoint point)

這樣之後就可以用滑鼠拖動對話方塊了。

相信通過本文的講解之後,大家可以做出自己需要的個性化介面了。有問題可以聯絡我哦

,email:

[email protected]

製作GRUB個性化引導介面

安裝imagemagick,修改時要用到 yum install imagemagick要求它的解析度是640 480 因為grub只支援這個解析度的 將格式轉成xpm 因為grub只支援這個格式的 並且該xpm的色深必須是14,此要求用乙個命令就可以完成 我們先要原先的備份 gzip 9 spla...

VC定製個性化的MessageBox解決方法

相信學過vc的人都知道messagebox 函式的用法 int messagebox hwnd hwnd,handle to owner window lpctstr lptext,text in message box lpctstr lpcaption,message box title uin...

完全定製個性化linux安裝介面

最近定製了乙個ubuntu的安裝介面,感覺比較有意思,寫上來,有興趣的朋友可以實踐一下.先介紹一下grub和isolinux,以及一些開機引導程式.1 bios basic input output system,一般的情況下是歸結於firmware這一類的.這裡是為了連線通順,就簡單的說一下bio...