VC++ 为什么在自己定义的类里面调用下面函数,执行时报错?
我自己定义了一个独立的类,不是从别的类派生而来的。我想通过下面一段程序获取一个MFC控件的CDC。CWndWn;CDC*pDC=Wn.GetDlgItem(nID)->G...
我自己定义了一个独立的类,不是从别的类派生而来的。我想通过下面一段程序获取一个MFC控件的CDC。
CWnd Wn;
CDC* pDC=Wn.GetDlgItem(nID)->GetDC(); /*执行此句时,会报错,报错位置在文件dbgrptt.c里面,具体位置如下图所示,不知为什么。*/ 展开
CWnd Wn;
CDC* pDC=Wn.GetDlgItem(nID)->GetDC(); /*执行此句时,会报错,报错位置在文件dbgrptt.c里面,具体位置如下图所示,不知为什么。*/ 展开
展开全部
CDC* pDC=Wn.GetDlgItem(nID)->GetDC();
在这句话里面,Wn必须是一个有效的窗口才可以,这个窗口必须已经创建并显示。
而你弄了一个CWnd变量,没有实体窗口,当然没有DC可以让你获取了。
追问
哦,多谢。如果我要在一个自己定义的类里面获取一个MFC控件的CDC,应该怎么编程序呢?
追答
必须通过关联获取实际控件指针,不同窗口关系和程序结构获取方法不同。
比如基于对话框的框架,主对话框下的某个控件,那么:
CWnd* pWnd = AfxGetMainWnd();
CDC* pDC = pWnd->GetDlgItem(nID)->GetDC();
如果窗口关系不熟悉,那么在调用自定义函数或者类的时候,将实际窗口指针,通过参数传递过去就好了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询