菜鸟请问dialog base程序中在其他类中如何获得对话框类的某一控件句柄?

kvw3000 2004-06-16 09:33:44
CtestDlg : public CDialog
{......}


Cother
{...
}

void Cother::getlist()
{
CtestDlg::GetDlgItem(IDC_LIST);
....
}

为什么编译提示error C2352: 'CWnd::GetDlgItem' : illegal call of non-static member function,请问如何解决?

谢谢各位大人。
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kvw3000 2004-06-16
  • 打赏
  • 举报
回复
thanks !

结帖
kvw3000 2004-06-16
  • 打赏
  • 举报
回复
thanks !

结帖
快乐鹦鹉 2004-06-16
  • 打赏
  • 举报
回复
你这么写当然不行了。因为这个函数不是静态函数,所以不能这么写。
CTestDlg是不是你的基于对话框的程序的主对话框?如果是,那么可以这么写:
CTestDlg *pDlg = (CTestDlg*)(AfxGetApp()->m_pMainWnd);
pDlg->GetDlgItem(IDC_LIST);
就可以了。要先获得当前显示的那个对话框的实例才行。
李马 2004-06-16
  • 打赏
  • 举报
回复
在你获得控件指针后,调用CWnd::GetSafeHwnd就可以了。
tgb 2004-06-16
  • 打赏
  • 举报
回复
你应该用那个类的实例,而不是类本身!

CtestDlg dlg;

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧