CPaintDC dc(this)中的this指针的含义解析

 

答1:this是指当前窗体对象,dc用带有this指针的构造函数进行构造,是指当前窗口的dc。

答2:用了this指针初始化后,你操作的dc就是当前窗体,也即当前窗体就是你的画布!

答3:每个类都有一个默认指针this指向自己。

答4:就是获取当前窗口的dc而已,可以用这个DC在当前窗口绘图。当然你也可以获取其它窗口的dc,只要传入其它窗口的指针就可以了。

同理CClientDC dc(this);中的this也是这个意思。

其实,控件就是一个子窗口,我们可以通过CClientDC在控件上绘图。参加下面代码:

 

void CXXXXXDlg::OnBnClickedButton1()
{
	// TODO: Add your control notification handler code here
CString sTemp;
	sTemp="我们的爱";
	CWnd* pWnd1;
	pWnd1 = GetDlgItem(IDC_STATIC_SEX);	//返回控件句柄
	CClientDC dc1(pWnd1);
	dc1.TextOutW(0,0,sTemp);//在static控件上输出文字

CClientDC dc2(this);
	dc2.TextOutW(0,0,sTemp);//在客户区上输出文字
}


从上面可以看出,往哪里输出,取决于dc指向,在上面的例子中,dc1指向控件(子窗口),dc2指向对话话窗口(父窗口)。

其实CClientDC dc1(pWnd1);就相当于如下两条语句:

CDC* dc1;

dc1=pWnd1->GetDC();

 当然了,由于现在dc1被定义成指针变量,则dc1.TextOutW(0,0,sTemp);要改成dc1->TextOutW(0,0,sTemp);你懂的。

 

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值