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

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( , );但这句话会异常。
如果你们看懂了我的意思,指导我一下啊,分不是问题。主要就是想在子对话框中调用通信类
...全文
322 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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调用这个指针。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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