【MFC】MFC下如何设置控件的字体样式,窗口背景和控件底色透明

重写OnPaint方法(WM_PAINT)和OnCtlColor的方法(WM_CTLCOLOR)

 

void CPannelRecentUsed::OnPaint()
{
	CPaintDC dc(this); // device context for painting
					   // TODO: 在此处添加消息处理程序代码
					   // 不为绘图消息调用 CDialogEx::OnPaint()
	CRect   rect;
	GetClientRect(rect);
	dc.FillSolidRect(rect, RGB(0, 191, 255)); //绘制背景

	SetText(&dc, &rect);//设置字体样式,声明void SetText(CPaintDC *pDC, CRect rec);

	CDialog::OnPaint();
}

//设置字体样式
void CPannelRecentUsed::SetText(CPaintDC *pDC, CRect rec)
{
	
    //CFont font;需要定义在头文件中才生效
	font.CreatePointFont(180, "微软雅黑", pDC);
	GetDlgItem(IDC_STATIC_TITLE)->SetFont(&font);//未绑定控件变量下的
	font.CreatePointFont(160, "微软雅黑", pDC);
	m_edlit_curBillNo.SetFont(&font);//绑定控件变量下的


}

//解决控件与背景颜色不融合的情况
HBRUSH CPannelRecentUsed::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO:  在此更改 DC 的任何特性
	UINT id = pWnd->GetDlgCtrlID();
	if ((id == IDC_STATIC)||(id == IDC_STATIC_TITLE))//id指控件的ID
	{
		pDC->SetBkMode(TRANSPARENT);

		CRect rc;
		pWnd->GetWindowRect(&rc);
		ScreenToClient(&rc);

		CDC* dc = GetDC();

		pDC->BitBlt(0, 0, rc.Width(), rc.Height(), dc, rc.left, rc.top, SRCCOPY);  //把父窗口背景图片先画到按钮上

		ReleaseDC(dc);

		hbr = (HBRUSH) ::GetStockObject(NULL_BRUSH);
	}
	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return hbr;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值