1.4 MFC控件设置

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,维持大小不变;

 

你可能感兴趣的:(mfc,设置,控件,对话框)