【求助】获取父指针后如何操作父对话框控件?

辅_ 2015-12-09 09:53:56
楼主有Dlg1(父)和Dlg2(嵌于tab控件的子窗口)两个窗口
利用CDlg1* dlg1=(CDlg1*)GetParent();获取了父窗口Dlg1的指针,父窗口有listCtrl(变量名:m_listctrl)和Edit控件(变量名:m_edit)
那么问题来了,
dlg1->m_edit.SetWindowText("13143242");编译通过,运行中断


操作m_listctrl同样报错

那么究竟如何操作父指针呢?请详细解答,谢谢
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
辅_ 2015-12-09
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
可以试试在Dlg1中添加一个接口函数, 通过调用这个函数操作

void CDlg1::SetEditText(LPCTSTR str)
{
m_Edit.SetWindowText(str)
}

dlg1->SetEditText(_T("1234"))

我试着调用一个listctrl的函数和调用变量一样出错

zgl7903 2015-12-09
  • 打赏
  • 举报
回复
可以试试在Dlg1中添加一个接口函数, 通过调用这个函数操作

void CDlg1::SetEditText(LPCTSTR str)
{
m_Edit.SetWindowText(str)
}

dlg1->SetEditText(_T("1234"))
辅_ 2015-12-09
  • 打赏
  • 举报
回复
引用 5 楼 zgxyz2010 的回复:
[quote=引用 4 楼 xyz59886 的回复:] [quote=引用 3 楼 zgxyz2010 的回复:] 断言失败说明CListCtrl关联的窗口没创建。楼主要确保Dlg1确实创建出来了,其次确保GetParent()函数返回的的确是Dlg1的指针,最后 dlg1->m_edit.SetWindowText("13143242");这段代码一定要在主线程(界面线程)中调用。 楼主可以在Dlg2定义一个Dlg1的指针变量,通过该类的构造函数,明确将Dlg1作为指针参数传入到Dlg2中,试试。如果还不行,就调用PostMessage向Dlg1发送一个自定义消息来实现。
谢谢回复,虽然已经解决,但你说到重点了因为子对话框在TAB控件下,所有要两次GetParent()获得父对话框指针。 请教一下,A和B是两个同一级别的对话框,分别有一个按钮,点击按钮都弹出C对话框,那么C算是谁的子对话框呢?[/quote]谁创建了C,C就是谁的子对话框。A、B都能弹出,那会产生2个C,分别是A、B子对话框。[/quote] thanks~
小竹z 2015-12-09
  • 打赏
  • 举报
回复
引用 4 楼 xyz59886 的回复:
[quote=引用 3 楼 zgxyz2010 的回复:] 断言失败说明CListCtrl关联的窗口没创建。楼主要确保Dlg1确实创建出来了,其次确保GetParent()函数返回的的确是Dlg1的指针,最后 dlg1->m_edit.SetWindowText("13143242");这段代码一定要在主线程(界面线程)中调用。 楼主可以在Dlg2定义一个Dlg1的指针变量,通过该类的构造函数,明确将Dlg1作为指针参数传入到Dlg2中,试试。如果还不行,就调用PostMessage向Dlg1发送一个自定义消息来实现。
谢谢回复,虽然已经解决,但你说到重点了因为子对话框在TAB控件下,所有要两次GetParent()获得父对话框指针。 请教一下,A和B是两个同一级别的对话框,分别有一个按钮,点击按钮都弹出C对话框,那么C算是谁的子对话框呢?[/quote]谁创建了C,C就是谁的子对话框。A、B都能弹出,那会产生2个C,分别是A、B子对话框。
辅_ 2015-12-09
  • 打赏
  • 举报
回复
引用 3 楼 zgxyz2010 的回复:
断言失败说明CListCtrl关联的窗口没创建。楼主要确保Dlg1确实创建出来了,其次确保GetParent()函数返回的的确是Dlg1的指针,最后 dlg1->m_edit.SetWindowText("13143242");这段代码一定要在主线程(界面线程)中调用。 楼主可以在Dlg2定义一个Dlg1的指针变量,通过该类的构造函数,明确将Dlg1作为指针参数传入到Dlg2中,试试。如果还不行,就调用PostMessage向Dlg1发送一个自定义消息来实现。
谢谢回复,虽然已经解决,但你说到重点了因为子对话框在TAB控件下,所有要两次GetParent()获得父对话框指针。 请教一下,A和B是两个同一级别的对话框,分别有一个按钮,点击按钮都弹出C对话框,那么C算是谁的子对话框呢?
小竹z 2015-12-09
  • 打赏
  • 举报
回复
断言失败说明CListCtrl关联的窗口没创建。楼主要确保Dlg1确实创建出来了,其次确保GetParent()函数返回的的确是Dlg1的指针,最后 dlg1->m_edit.SetWindowText("13143242");这段代码一定要在主线程(界面线程)中调用。 楼主可以在Dlg2定义一个Dlg1的指针变量,通过该类的构造函数,明确将Dlg1作为指针参数传入到Dlg2中,试试。如果还不行,就调用PostMessage向Dlg1发送一个自定义消息来实现。
内容概要:本文围绕“价格型需求响应”展开,重点研究基于Logistic函数的负荷转移率模型在需求响应中的应用,并提供了完整的Matlab代码实现。通过构建数学模型,精确量化电价变动对电力负荷转移行为的影响,旨在优化电力系统供需平衡,提升电网运行效率与经济性。研究系统阐述了模型的理论基础、关键参数设定、仿真流程设计及结果分析方法,适用于电力市场环境下用户侧响应行为的建模与优化,为需求响应策略的制定提供科学依据和技术支撑。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的科研人员、高校研究生及从事能源管理、智能电网、电力市场等相关工作的技术人员。; 使用场景及目标:①应用于电力需求侧管理研究,模拟和预测不同电价政策下用户的负荷响应特性;②为电力市场机制设计、峰谷分时电价制定及电网调度优化提供模型支持与仿真工具;③作为教学案例帮助学生深入理解需求响应建模原理、非线性函数拟合方法及数值仿真技术。; 阅读建议:建议读者结合Matlab代码逐段理解模型实现细节,重点关注Logistic函数在刻画负荷转移率非线性特征方面的优势,并可根据实际研究需求调整模型参数,进行扩展性实验与验证。

16,550

社区成员

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

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

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