topguntoo 2023-02-24 21:43 采纳率: 40%
浏览 66
已结题

MFC子窗口调用 父窗口 编译通过运行出错,求看看什么问题

父窗口是 ETXTV23Dlg.cpp和ETXTV23Dlg.h
子窗口是 Tab_Data_DCData.cpp和Tab_Data_DCData.h

父窗口里有个函数

void CETXTV23Dlg::MSCommSend(unsigned char * data, unsigned int len)
{
    CByteArray array; //定义一个字节集
    array.RemoveAll(); //清空数组
    if (0 != len)
    {
        array.SetSize(len); //设定数组长度
                            //将发送数据写入到临时数组
        for (UINT i = 0; i < len; i++)
        {
            array.SetAt(i, *data++);
        }
        //调用mscomm发送数据,COleVariant类自查百度吧
        m_MsComm.put_Output(COleVariant(array));
    }
}

在子窗口里有个按钮要调用这个串口发动函数

void Tab_Data_DCData::OnBnClickedButtonMcutopc()//从终端读取数据
{
    // TODO: 在此添加控件通知处理程序代码
    CETXTV23Dlg *pDlg = (CETXTV23Dlg*)this->GetParent();
    int i=0;
    sendBuf1[i++] = 1;
    sendBuf1[i++] = 2;
    sendBuf1[i++] = 3;
    sendBuf1[i++] = 4;
    sendBuf1[i++] = 5;
    sendBuf1[i++] = 6;
    sendBuf1[i++] = 7;
    sendBuf1[i++] = 8;
    pDlg->MSCommSend(sendBuf1,8);
}

这样编译能通过 运行到这报错,大虾帮我看看

img

  • 写回答

5条回答 默认 最新

  • zzwwtyyds 2023-02-24 21:55
    关注

    根据您提供的错误信息,可以看出是由于子窗口调用父窗口的函数时,无法找到父窗口指针而导致的错误。这可能是因为您的子窗口并没有正确获取父窗口指针。

    在您的代码中,您使用了以下代码来获取父窗口指针:

    CETXTV23Dlg *pDlg = (CETXTV23Dlg*)this->GetParent();
    
    
    

    这个方法是获取当前窗口的父窗口指针。但是,如果当前窗口并不是直接嵌套在父窗口中,而是通过其他窗口嵌套进来的,那么这个方法可能会返回一个错误的指针。

    为了解决这个问题,您可以尝试使用以下方法来获取父窗口指针:

    CETXTV23Dlg *pDlg = (CETXTV23Dlg*)AfxGetMainWnd();
    
    
    

    这个方法可以获取主窗口的指针,即您的父窗口的指针。请尝试修改您的代码并使用这个方法来获取父窗口指针,并重新编译和运行程序。如果问题仍然存在,请提供更多的错误信息以便我们更好地帮助您解决问题。
    引用gpt

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 赞助了问题酬金15元 2月24日
  • 创建了问题 2月24日

悬赏问题

  • ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
  • ¥36 如何安全的迁移用户C盘用户文件(戴尔电脑)
  • ¥15 druid(相关搜索:数据库|防火墙)
  • ¥15 大一python作业
  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥60 如何鉴定微信小程序数据被篡改过
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥20 手机截图相片分辨率降低一半