代码改变世界

MFC/WTL 设置背景图和控件透明的方法

2016-04-19 17:00  sylar_liang  阅读(1463)  评论(0编辑  收藏  举报

1.MFC 对话框设置背景图

方法一:

1>资源中导入一张bitmap图,如命名为 IDB_BITMAP1

2>对话框中添加一个 Picture Control,属性设置 Type 改为Bitmap,Image 设置为 IDB_BITMAP1, Transparent 设置为 False 即可

 

方法二: 此方法尚未验证

1>资源添加一张bitmap,命名为IDB_BITMAP1

2>Dlg中定义 CBrush m_brBk;

3>OninitDialog中

CBitmap bmp;

bmp.LoadBitmap(IDB_BITMAP1);

m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject();

4>重载 WM_CTLCOLOR

if (pWnd == this)

{

  return m_brBk;

}

 

2.MFC 对话框设置控件为透明.

1>button则需要额外设置属性 TRANSPARENT 为 True,其他的 checkbox,static,edit等控件TRANSPARENT设置为 true或false都可以透明显示。

2>重载对话框的 WM_CTLCOLOR

{

  if(pWnd->GetDlgCtrlID() == 控件ID) //控件可以为static,checkbox,button,edit等

  {

  pDC->SetBkMode(TRANSPARENT);

    pDC->SetTextColor(RGB(0,0,0)); //字体颜色,黑色

    return (HBRUSH)GetStockObject(NULL_BRUSH);

  }

  return hbr;

}

 

3.WTL 添加背景图并透明显示

 

4.WTL 控件透明

 

5.WTL 设置字体大小颜色

CFont cf;

cf.CreateFont(20, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("宋体"));

m_listctrl.SetFont(cf, TRUE);

m_listctrl.SetTextColor(RGB(0,0,0)); //设置字体颜色