Dr.Toms 2023-10-23 13:18 采纳率: 50%
浏览 15
已结题

在使用MFC时,调用了CTestDlg的对象,想要设置按钮的文本从“打开(O)”改为”OK“,但是运行exe会提示如下图,这是为什么?

在使用MFC时,调用了CTestDlg的对象,想要设置按钮的文本从“打开(O)”改为”OK“,但是运行exe会提示如下图,这是为什么?

img

img

img


void CTestDlg::OnBnClickedOpenbtn()
{
    // TODO: 在此添加控件通知处理程序代码
    CString fileName1;

    // 文件过滤器
    CFileDialog dlg(TRUE, NULL, L"*.*", OFN_FILEMUSTEXIST,
        L"Audio(*.wav)|*.wav|"
        L"Audio(*.mp3)|*.mp3|"
        L"video(*.mp4)|*.mp4|"
        L"ALL(*.*)|*.*||"
    );

    dlg.m_ofn.lpstrTitle = _T("Select media file");
    dlg.SetControlText(IDOK, _T("ok"));


    if (dlg.DoModal() == IDOK)
    {
        fileName1 = dlg.GetPathName();
        m_Player.put_URL(fileName1);
        KillTimer(1);
    }
    else
    {
        return;
    }
    m_media = static_cast<CWMPMedia3>(m_Player.newMedia(fileName1));
    m_progress.SetRange(0, (int)m_media.get_duration()); // 媒体总长度  
    m_progress.SetPos(0);
}

  • 写回答

15条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-23 15:25
    关注
    获得0.45元问题酬金

    引自强大而免费的微信小程序:皆我百晓生

    在调用dlg.SetControlText(IDOK, _T("ok"));设置按钮文本时,是不合法的操作。因为CFileDialog中的按钮ID不是IDOK,而是IDC_OPENFILE。所以应该修改为dlg.SetControlText(IDC_OPENFILE, _T("ok"));

    另外,

    • 检查按钮的ID是否正确。确保ID为IDC_OPENBTN的按钮存在。
    • 检查对话框资源中的按钮定义,确保按钮类型为“Button”且样式为“BS_PUSHBUTTON”。
      还需要注意的是,设置按钮文本的语言应该与系统语言对应。
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 赞助了问题酬金15元 10月23日
  • 创建了问题 10月23日