mfc中CClientDC(this)的this怎么获得?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc中CClientDC(this)的this怎么获得?相关的知识,希望对你有一定的参考价值。
假如我在别的文件中使用CClientDC,在mfc新建的窗口上画图,括号里的参数该写什么?
CClientDC clientDC(this); this不需要获得。this指向的对象所代表的窗口.每一个对象保存一个m_Hwnd成员,指向这个对象创建出来的窗口.当你调用dc(this)的时候,类内部会自动将这个m_hwnd成员交给设备上下文.所以这里的this其实就是传递自身,为了获取自身对象内的m_hwnd以便得到所要操作的是哪个窗口.追问
如果我在别的文件里想使用这个cview的m_hwnd呢?
参考技术A this是在窗口类内获取本窗口指针的方法。无论你在哪里需要DC,首先要获取已存在的窗口指针(或句柄),才能获取DC。括号里面,就是窗口指针。
在MFC中,有多种框架内获取窗口指针的方法,这要看你在什么位置,需要获取什么窗口的指针。
常用函数包括:
AfxGetMainWnd();//获取主框架窗口
MDIGetActive()->GetActiveView;//框架窗口获取多文档的当前视图
GetActiveDocument()->GetFirstViewPosition() / GetNextView() //通过文档获取视图窗口。本回答被提问者采纳 参考技术B this指针指向所在类的对象,哪个类调用的就是哪个类吧。应该是这样的吧追问
不用this怎么获得?
MFC 画字体DrawText()或TextOut(),CFont字体样式类
新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数
void CMFCApplication27View::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 CRect rect; this->GetClientRect(&rect);//获取客户区大小 CFont font;//用来设置大小、样式,颜色用dc.SetTextColor设置 font.CreatePointFont(200, TEXT("Arial"));//20号字 dc.SelectObject(&font); //-------------------- 矩形框偏移,阴影效果 -------------------------------------// dc.SetBkMode(TRANSPARENT);//透明,否则新的遮住旧的 rect.OffsetRect(20, 20);//右、下偏移20 dc.SetTextColor(RGB(192, 192, 192));//灰色 dc.DrawText(TEXT("DrawText画文本"), &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);//方式一,客户区、单行、上下左右居中 rect.OffsetRect(-20, -20);//左、上偏移20 dc.SetTextColor(RGB(0, 0, 0));//黑色 dc.DrawText(TEXT("DrawText画文本"), &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); //---------------------------------------------------------------------// dc.TextOut(10, 10, TEXT("TextOut画文本"));//方式二,起始点(10,10) //-------------------- 画字方式三 -------------------------------------// LOGFONT lf; //逻辑字 ::ZeroMemory(&lf, sizeof(lf));//清内存,::可以调用API函数 lf.lfHeight = 120;//12号字 lf.lfWeight = FW_BOLD;//加粗 lf.lfItalic = TRUE;//斜体 ::lstrcpy(lf.lfFaceName, TEXT("Times New Roman")); CFont font2; font2.CreatePointFontIndirect(&lf); dc.SelectObject(&font2); dc.TextOut(10, 50, TEXT("逻辑字")); }
以上是关于mfc中CClientDC(this)的this怎么获得?的主要内容,如果未能解决你的问题,请参考以下文章