CDC在OnPaint函数中采用TextOut函数初始化静态文本框

在VC++程序中,使用CDC的TextOut()函数在OnPaint()内初始化静态文本框时,字符会被文本框覆盖。原因是文本控件在对话框显示后绘制。为解决这个问题,可以重写OnCtlColor函数,用透明画刷绘制静态文本框,避免覆盖现象。
摘要由CSDN通过智能技术生成

创建静态文本框之后如果想要在程序段中初始话文本框中的内容可以采用CDC类中的TextOut()函数,但是如果在OnPaint()中直接书写代码会导致待输出字符被静态文本框覆盖这是因为对话框上的文本控件是在对话框显示后才画上去的,所以用textout直接输出字体会被覆盖。link
如下所示:
程序设计界面

void CVCDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		
		CDialog::OnPaint();
		StyleInit();
	}

}
voi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值