VC++ 为什么在自己定义的类里面调用下面函数,执行时报错?

我自己定义了一个独立的类,不是从别的类派生而来的。我想通过下面一段程序获取一个MFC控件的CDC。CWndWn;CDC*pDC=Wn.GetDlgItem(nID)->G... 我自己定义了一个独立的类,不是从别的类派生而来的。我想通过下面一段程序获取一个MFC控件的CDC。
CWnd Wn;
CDC* pDC=Wn.GetDlgItem(nID)->GetDC(); /*执行此句时,会报错,报错位置在文件dbgrptt.c里面,具体位置如下图所示,不知为什么。*/
展开
 我来答
bhtzu
2014-09-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4199万
展开全部
CDC* pDC=Wn.GetDlgItem(nID)->GetDC();

在这句话里面,Wn必须是一个有效的窗口才可以,这个窗口必须已经创建并显示。

而你弄了一个CWnd变量,没有实体窗口,当然没有DC可以让你获取了。

追问
哦,多谢。如果我要在一个自己定义的类里面获取一个MFC控件的CDC,应该怎么编程序呢?
追答

必须通过关联获取实际控件指针,不同窗口关系和程序结构获取方法不同。

比如基于对话框的框架,主对话框下的某个控件,那么:

CWnd* pWnd = AfxGetMainWnd();
CDC* pDC = pWnd->GetDlgItem(nID)->GetDC();

 如果窗口关系不熟悉,那么在调用自定义函数或者类的时候,将实际窗口指针,通过参数传递过去就好了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式