vc全局函数中通过子类成员调用基类成员函数?

mtkcpp 2010-04-13 06:13:33
class CSortListCtrl : public CListCtrl
{
public:
void SetItemColor();//这个是设置CListCtrl控件的颜色的
}

class CListDemoDlg : public CDialog
{
public:
CSortListCtrl m_MyListCtrl;//这个是CListCtrl控件的关联变量
//ID是IDC_LIST1
}

void global() //这是一个全局的函数
{
//请问这里面怎么通过m_MyListCtrl调用SetItemColor();如果有其它方法也可以

}

...全文
199 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mtkcpp 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gg606 的回复:]
C/C++ code
CListDemoDlg pMain = (CListDemoDlg *)((CMy888App *)::AfxGetApp())->GetMainWnd();
pMain->m_MyListCtrl.SetItemColor();
[/Quote]
谢谢,正解。 mMain加个*
sunyanlai666 2010-04-13
  • 打赏
  • 举报
回复
问题的关键是怎样得到CListDemoDlg的实例指针,这就要看具体情况了,如果是对话框程序的主框架的话直接调用全局函数AfxGetMainWnd()就OK了,然后依次调用->m_MyListCtrl.SetItemColor();如果不是的话哪么就声明一个全局变量,在创建实例的时候,把该指针放在全局变量中再调用。
arong1234 2010-04-13
  • 打赏
  • 举报
回复
这根本不是什么所谓的通过子类对象调用基类函数问题。只要你有子类对象,且呗调用函数是public的,你当然是随时可以调用基类对象,根本不需要任何特殊事情。

问题关键是:你怎么找到你所想要操作的那个对话框的那个控件?如果你象2楼那样搞,不崩盘才怪

老实说,怎么定义到正确的实例,是要根据具体情况而言的,楼主需要明白“实例”到底是啥才行,别人给的建议也许能工作,但是是否真的能适用于你的应用,那就不好说了
[Quote=引用楼主 it3500 的回复:]
class CSortListCtrl : public CListCtrl
{
public:
void SetItemColor();//这个是设置CListCtrl控件的颜色的
}

class CListDemoDlg : public CDialog
{
public:
CSortListCtrl m_MyListCtrl;//这个是CListCtrl控件的关联变量……
[/Quote]
lilyzhu_2016 2010-04-13
  • 打赏
  • 举报
回复
可以将void global() 设为class CListDemoDlg 的友元吧
Eleven 2010-04-13
  • 打赏
  • 举报
回复
CSortListCtrl m_MyListCtrl;//这个是CListCtrl控件的关联变量
加个static,定义为静态变量
gg606 2010-04-13
  • 打赏
  • 举报
回复
 CListDemoDlg pMain = (CListDemoDlg *)((CMy888App *)::AfxGetApp())->GetMainWnd();
pMain->m_MyListCtrl.SetItemColor();

jackylvm 2010-04-13
  • 打赏
  • 举报
回复
void global() //这是一个全局的函数
{
//在这里定义一个CListDemoDlg变量,因为m_MyListCtrl是public的,可以直接访问
CListDemoDlg dlg;
dlg.m_MyListCtrl.SetItemColor();
}

syxhpx 2010-04-13
  • 打赏
  • 举报
回复
定义个CListDemoDlg 的全局变量,用它来调用SetItemColor

15,979

社区成员

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

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