MFC tabcontrol使用问题,请大侠帮忙!万分感谢!

我要奋斗---为了他们 2014-03-21 04:41:16
我用tabcontrol上的子窗口操作父窗口上的函数有时出现_com_error错误。
为了实现数据传递,我调用父窗口上的普通的赋值函数,调试能够通过,可是如果我调用的函数中用到父窗口使用的SDK API基本会报上述的_com_error错误。可是如果我在父窗口中调用父窗口中的函数,且函数中含有SDK API函数就没有问题。
为什么?请大侠不吝赐教。
在子窗口中如下调用:
CMytextDlg * pDlg = (CMytextDlg*)GetParent();
pDlg->readpoint(&mx,&my,&mz);
父窗口含有引用的SDK函数,基本就会报错。
...全文
177 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
杀意已决 2014-03-25
  • 打赏
  • 举报
回复
tabctr 和子窗口搭配使用的例子是很多的
小竹z 2014-03-24
  • 打赏
  • 举报
回复
意思就是“FindWindow("类名(可以是派生类)","窗口标题")或GetParent()”返回的CWnd*并不是当前窗口父窗口,只是根据窗口句柄返回一个临时CWnd指针。
  • 打赏
  • 举报
回复
问题已经解决了 在子窗口中调用父窗口的成员函数的方法 1、用FindWindow("类名(可以是派生类)","窗口标题")或GetParent(),二者均能返回父窗口句柄,并能直接使用其成员函数。但是此法只能调用CWnd类里的成员函数,而不能调用自己创建的派生类中的函数。 2、在子窗口的初始化函数里加上父窗口的指针 ,然后在子窗口的类中使用全局变量保存父窗口的指针。如: 父窗口类为CMyDlg(父类为CDialog),子窗口类为CMySon(父类为CDialog),则在CMyDlg::OnInitDialog()中初始化子窗口对象m_myson=new CMySon(this);(m_myson为在父窗口中声明的成员),然后在MySon.cpp中的开始处声明全局变量CMyDlg *parent;(在MySon.h中要加入MyDlg.h头文件),最后在CMySon的构造函数中定义parent=(CMyDlg*)pParent; 好了,现在你可以在子窗口中随时调用父窗口函数了!

16,548

社区成员

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

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

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