對話方塊與其控制項的顏色

2021-05-18 01:22:05 字數 1210 閱讀 7185

要改變對話方塊的一般顏色,可以在c

***0

,255

,255

),rgb(

255,0,

0));

//背景青藍、文字紅色

但是這樣不能改變對話方塊中的圖形控制項的顏色;

每個控制項在dialog中都是乙個視窗,當要繪製控制項時,會發出乙個wm_ctlcolor訊息給它的父視窗(對話方塊本身).訊息對映及響應函式如下:

on_wm_crlcolor()  //反映wm_ctlcolor訊息

afx_msg hbrush cwnd::oncrlcolor(cdc* pdc,cwnd* pwnd,uint nctlcolor);

//nctlcolor型別:

ctlcolor_dlg對話方塊本身,不含有所有的控制項

ctlcolor_static 所有包含static text控制項的設定(也包括無效的edit box、combo box的eidt box)

ctlcolor_edit     edit box與combo box的eidt box部分

ctlcolor_list     list box與combo box的edit box部分

ctlcolor_scrollbar  scroll bar的空白區

我們也可以單獨改變某乙個控制項的顏色.onctrlcolor函式的pwnd成員變數是各控制項的視窗指標,以pwnd->getdlgctrlid()可以獲得呼叫此函式的控制項id,將它與已知id比較,就可以改變這個控制項的顏色。另外乙個作法是比較pwnd;例如:如果乙個edit box控制項的成員變數m_edit1被宣告為cedit類,那麼把m_edit1.m_hwnd與pwnd->m_hwnd比較,也可以知道是哪個控制項.

下面是乙個例子:

hbrush c

***dlg::onctlcolor(cdc

*pdc, cwnd

*pwnd, uint nctlcolor) 

cbrush m_cbrush;

m_cbrush.createsolidbrush(rgb(0,

255,

255));

switch

(nctlcolor)

deleteobject(m_cbrush);

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

return

hbr;}

對話方塊控制項

單選對話方塊 newalertdialog.builder this settitle 請做出你的選擇 seticon r.mipmap.ic launcher setpositivebutton 確認 null setnegativebutton 取消 null setsinglechoiceit...

Qt之標準對話方塊 顏色對話方塊

1 在標頭檔案中包含 include qcolordialog void widget on colorbutton clicked 這裡使用了qcolordialog的靜態函式getcolor 來獲取顏色,它的三個引數的作用分別是 設定初始顏色 指定父視窗和設定對話方塊標題。getcolor 函式...

改變對話方塊顏色

2008 06 26 23 06 11 分類 技術積累篇 標籤 字型大小 大中小訂閱 其中函式的第乙個引數指定了背景顏色,第二個引數指定了文字顏色。下面的例子是將應用程式對話方塊設定為藍色背景和紅色文字,步驟如下 編譯並執行,此時對話方塊的背景色和文本色已發生了改變。值得注意的 是 在呼叫domod...