首页 > 解决方案 > 对“MessageDlg”的调用没有匹配的函数

问题描述

我收到一个错误,表明它们MessageDlg()在 C++ Builder 中没有匹配的调用函数。

我的头文件确实包含<Vcl.Dialogs.hpp>声明函数的位置。该函数是从TForm类公共函数中调用的。下面是有问题的代码:

void MBInvalidPosition() {
    MessageDlg("Invalid Position Selected. Please Try Again",
        mtError,mbOK,0);
}

任何想法将不胜感激。谢谢。

标签: c++c++builder

解决方案


C++ 支持重载函数——你调用的函数是它的名字和提供给它的参数类型的乘积。因此,假设您有正确的函数名称,一个合理的第一个猜测是您为其中一个参数提供了错误的类型。

具体来说,它看起来不像mbOK可以像那样提供 raw ——MessageDlg想要第三个 type 参数,TMsgDlgButtonsmbOK它是 type TMsgDlgBtn。创建一组仅包含 OK 按钮的按钮的适当方法是TMsgDlgButtons() << mbOK. 所以:

void MBInvalidPosition() {
    MessageDlg("Invalid Position Selected. Please Try Again",
        mtError,TMsgDlgButtons() << mbOK,0);
}

推荐阅读