1.4 MFC控件设置

本文介绍了如何在MFC应用中设置控件的字体颜色和背景透明,通过添加WM_CTLCOLOR消息映射并自定义OnCtlColor函数实现。同时,详细阐述了如何使用SetWindowPos函数灵活调整控件的位置和大小,以实现精确的界面布局。

1.设置控件字体颜色、背景透明

1.打开对应对话框的类向导ClassWizard。

 

2.在消息映射MessageMaps中添加消息Message:WM_CTLCOLOR。

 

3.然后程序代码中会添加进函数:

OnCtlColor(CDC*pDC, CWnd* pWnd, UINT nCtlColor)

 

4.在这个函数中添加if语句,其中的条件表达式改成想要设置的控件;

比如改成: if (pWnd->GetDlgCtrlID() == IDC_STATIC1 || pWnd-> GetDlgCtrlID() == IDC_STATIC2)

注意,控件ID最好改过,如果多个控件使用同个默认ID,函数则不识别。

 

5.在if中添加以下语句:
pDC->SetTextColor(RGB(255,255,255)); //设置字体为白色

pDC->SetBkMode(TRANSPARENT);         //设置背景为透明

 

整个函数的代码如下:

HBRUSHCHall::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
 if (pWnd-> GetDlgCtrlID() == IDC_STATIC1 || pWnd-> GetDlgCtrlID()== IDC_STATIC2 || pWnd-> GetDlgCtrlID() == IDC_STATIC3)
 {
  pDC->SetBkMode(TRANSPARENT);   //设置背景透明
  pDC->SetTextColor(RGB(255,255,255));
  return   HBRUSH(GetStockObject(HOLLOW_BRUSH));
 }
 return hbr;
}

 

2.控件位置、大小设置

         /*****控件位置*****/

         CRect       rect;

         GetClientRect(rect);                           //获取对话框大小

         CWnd       *pWnd;

         pWnd = GetDlgItem(IDC_STATIC_FONT1);

         pWnd -> SetWindowPos(NULL,rect.Width()/2-95,

                   rect.Height()/2-60,190,36,SWP_NOZORDER );

 

SetWindowPos()函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:
BOOL SetWindowPos(const CWnd*pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
第一个参数一般设为NULL;
x、y控件位置;cx、cy控件宽度和高度;
nFlags常用取值:
SWP_NOZORDER:忽略第一个参数;
SWP_NOMOVE:忽略x、y,维持位置不变;
SWP_NOSIZE:忽略cx、cy,维持大小不变;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值