导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

子对话框怎么调用主对话框里的方法

lsxsxs 2010-07-17 10:59:52
标题不太准确,我都不知道该怎么说这个问题。我描述一下。
1.建立了一个MFC对话框程序,界面类 CClientDlg。
2.给他添加了一个通信的类 CClientSocket,通信类是基于主对话框类的。
在CClientDlg.h中的声明是CClientSocket *m_pClient
可以在主对话框事件中调用m_pClient->Send( , );发送数据
3.我给住对话框的一个按钮事件加了个子对话框CSetting。重点来了:我想在子对话框中也能用CClientSocket中的Send函数,怎么办。
我把CClientDlg类和CClientSocket类都加进去了。不过一到Send的时候就会异常。
我是这样写的
CClientDlg *dlg;
dlg->m_pClient->Send( , );但这句话会异常。
如果你们看懂了我的意思,指导我一下啊,分不是问题。主要就是想在子对话框中调用通信类
...全文
161 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
m_tornado 2010-07-17
[Quote=引用 2 楼 fishion 的回复:]

CClientDlg *dlg;
dlg->m_pClient->Send( , );但这句话会异常。

大哥,你dlg还没有指向一个实体,当然会出错了,用CClientDlg *dlg=(CClientDlg *)AfxGetMainWnd()
[/Quote]

up,最好判断dlg指针是否为空,不然很危险~
回复
飘云 2010-07-17
为什么不直接传入m_pClient指针呢?
也可以定义消息。
回复
fishion 2010-07-17
CClientDlg *dlg;
dlg->m_pClient->Send( , );但这句话会异常。

大哥,你dlg还没有指向一个实体,当然会出错了,用CClientDlg *dlg=(CClientDlg *)AfxGetMainWnd()
回复
hongya6088 2010-07-17
自定义消息,CClinentDlg在实现自定义消息中调用Send方法。
回复
lsxsxs 2010-07-17
谢谢各位了啊
回复
lsxsxs 2010-07-17
[Quote=引用 2 楼 fishion 的回复:]
CClientDlg *dlg;
dlg->m_pClient->Send( , );但这句话会异常。

大哥,你dlg还没有指向一个实体,当然会出错了,用CClientDlg *dlg=(CClientDlg *)AfxGetMainWnd()
[/Quote]
我写掉了,实际上中间是有实体的,在dlg->m_pClient->Send()之前我有dlg = new CClientDlg();
不过现在解决了,吧CClientSocket声明为静态变量
回复
Eleven 2010-07-17
你修改你的子对话框类的构造函数,将你对话框类中的m_pClient作为参数传递给他不就可以了
回复
Eleven 2010-07-17
你修改你的子对话框类的构造函数,将你对话框类中的m_pClient作为参数传递给他不就可以了
回复
向立天 2010-07-17
通过AfxGetMainWnd可以得到主对话框的指针
然后你应该会操作了
回复
逗比汪星人 2010-07-17
在CSetDlg中这样写就行了!

((CClientDlg *)GetParent())->m_pClient->Send()


比如你现在依次显示有三个窗口A、B、C,(C在最前)

那么你在C中可以这样写:
((A *)GetParent())->YourFunInA()

((B *)GetParent())->YourFunInB()


B中只能写一个:
((A *)GetParent())->YourFunInA()
回复
Abcix 2010-07-17
方法1:在CClientDlg中搞一个CClientSocket友元。
方法2:定义一个CClientDl类对象的全局指针,在CClientSocket调用这个指针。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……