久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2771|回復: 0
打印 上一主題 下一主題
收起左側

VC/MFC如何設置對話框背景顏色

[復制鏈接]
跳轉到指定樓層
樓主
ID:104287 發表于 2016-1-31 00:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
VC/MFC如何設置對話框背景顏色
方法一:調用CWinApp類的成員函數SetDialogBkColor來實現。  (這個函數已經廢棄)
[size=1em]
1

void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0));



其中函數的第一個參數指定了背景顏色,第二個參數指定了文本顏色。
在InitInstance()中添加如下代碼:  
[size=1em]
1

SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));



值得注意的是:在調用DoModal()之前必須先調用SetDialogBkColor。
這種方法經過筆者驗證,并不能改變對話框背景
方法二:重載OnPaint(),即WM_PAINT消息
[size=1em]
1

2

3

4

CRect   rect;  
CPaintDC   dc(this);  
GetClientRect(rect);  
dc.FillSolidRect(rect,RGB(0,255,0));   //設置為綠色背景



方法三:重載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR消息
.h頭文件添加 CBrush  m_brush;
.cpp源文件添加 m_brush.CreateSolidBrush(RGB(255,0,0));
[size=1em]
1

2

3

4

5

6

7

OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)   
{  
/*  下行代碼要注釋掉  
     HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
*/
return   m_brush;   //返加紅色刷子  
}



方法四:還是重載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor), 即WM_CTLCOLOR消息
.h頭文件添加 CBrush m_brush;
.cpp源文件添加 m_brush.CreateSolidBrush(RGB(255,0,0));
[size=1em]
1

2

3

4

5

6

7

8

OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  {  
  HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
  //在這加一條是否為對話框的判斷語句  
     if(nCtlColor   ==CTLCOLOR_DLG)  
        return   m_brush;   //返加紅色刷子  
  return   hbr;  
  }



可以根據不同的控件類型返回不同的畫刷,來實現不同控件顏色的設置  
[size=1em]
1

2

3

4

5

6

7

CTLCOLOR_BTN                按鈕控件
CTLCOLOR_DLG                對話框
CTLCOLOR_EDIT               編輯框
CTLCOLOR_LISTBOX            列表控件
CTLCOLOR_MSGBOX             消息控件
CTLCOLOR_SCROLLBAR          滾動條控件
CTLCOLOR_STATIC             靜態控件



[size=1em]
1

這里大家要注意,OnCtlColor能改變Static等子控件的顏色,對于Button必須設置其屬性Owner Draw為True,才能改變Button按鈕背景色(CButton 文本的字體顏色并不能通過SetBkColor來改變,需要自己重繪CButton,在DrawItem中進行實現。


[size=1em]
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:  在此更改 DC 的任何屬性
if(nCtlColor==CTLCOLOR_BTN)          //更改按鈕顏色
{
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(121,121,255));   
  HBRUSH b=CreateSolidBrush(RGB(121,121,255));
  return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)  //
{
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(233,233,220));
  HBRUSH b=CreateSolidBrush(RGB(233,233,220));
  return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)   //更改編輯框
{
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(165,254,236));
  HBRUSH b=CreateSolidBrush(RGB(165,254,236));
  return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)  //更改靜態文本
{
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(166,254,1));
  HBRUSH b=CreateSolidBrush(RGB(166,254,1));
  return b;
}
else if(nCtlColor==CTLCOLOR_DLG)   //更改對話框背景色
{
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(166,254,1));
  HBRUSH b=CreateSolidBrush(RGB(166,254,1));
  return b;
}
// TODO:  如果默認的不是所需畫筆,則返回另一個畫筆
return hbr;
}




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区在线观看 | 欧美黄页 | 国产精品视频一区二区三 | 天天干天天爱天天操 | 国产成人午夜高潮毛片 | 久久综合久色欧美综合狠狠 | 日日干日日操 | 亚洲一区视频 | 国产成人精品一区二区三区视频 | 欧美久久一区二区 | 国产在线精品一区二区三区 | 日韩亚洲视频 | 日韩精品一区二区三区中文在线 | 四虎成人免费电影 | 国产资源一区二区三区 | 狠狠爱免费视频 | 婷婷二区| 日本一二区视频 | 欧美日韩一区精品 | 成人在线免费网站 | 嫩草黄色影院 | 黄色大片免费观看 | 噜噜噜噜狠狠狠7777视频 | 亚洲在线成人 | 九九热精品在线 | 中文字幕在线播放第一页 | www.国产| 中文字幕在线一 | 国产网站在线播放 | 欧美日本在线观看 | 日韩精品一二三 | 一级欧美 | 国产精品久久在线 | 国产精品久久久亚洲 | 国产精品一区二区电影 | 国产一区二区视频在线 | 国际精品鲁一鲁一区二区小说 | 青青草在线视频免费观看 | 亚洲视频二区 | 欧美 日韩 国产 在线 | 日韩在线视频免费观看 |