在CAPP类中要在窗口上面显示数据,怎么做

来源:百度知道 编辑:UC知道 时间:2024/06/19 21:50:39
我想在MFC窗口上面显示一些数据。
原来是用
C---View::OnDraw(CDC* pDC)
用CDC类的TextOut(int x,int y,CString str)函数显示,可是在CAPP类中好像不行
(我是想在菜单栏上面的按钮,按下去后将文件中的数据显示)
有很多人建议我用
CClientDC dc(this);
dc.TextOut(...);

CDC dc(this);
dc.TextOut(...);
可是它显示
1>f:\vcmfc\cxlstock\cxlstock.cpp(201) : error C2664: “CDC::CDC(const CDC &)”: 不能将参数 1 从“CCXLstockApp *const ”转换为“const CDC &”
1> 原因如下: 无法从“CCXLstockApp *const ”转换为“const CDC”
1> 无构造函数可以接受源类型,或构造函数重载决策不明确
谁能帮我,我提问了好久了

楼主在CXXXApp里画图的话,用CClientDC dc(this); 就不对了,楼主知道this是什么吗?dc为什么要接受一个这个this吗?
画画的话,有很多地方可以画,对话框里,框架窗口的标题栏,甚至是最大化按钮之类的也可以话的.
因此,dc需要接受一个可以画画的对象,首先你要把画画的对象通过参数的形式告诉dc,譬如在SDI中,一般画画是在框架窗口的客户区里画(客户区就是白色的那一块),但框架窗口的客户区实际上是被称为CView(不准确,楼主姑且这样理解)的窗口给覆盖住了(它也是白色的).因此最终你要把这个CView的窗口传给dc.
而你现在是把CXXXApp穿给了dc.CXXXApp他不是窗口,它代表的是程序,因此dc不能接受他的.
你可以这样做:
CClientDC dc(m_pMainWnd->GetActiveView());
dc.TextOut(...)
GetActiveView()这是个CFrameWnd的成员函数,他的功能就是返回当前活动的那个CView.因为是SDI,他只有一个CView,所以不用区分活动与不活动.但在MDI的模式下,CView会有好多个,所以要分活动与不活动的情况.
楼主应该多看看书,楼主的问题还是比较基础的,基本功稍微扎实了点,然后在试着自己写程序,初级阶段还是以看书,码书中的代码为好!(你的问题还有更好的解决办法,但感觉你基础不行,所以不便多说)