我想创建一个可重用的函数,每当我想使用 MessageBox 时都可以重用它,但在下面的代码中,有一个错误:
标识符“Lmessage”未定义
标识符“Ltitle”未定义
'Lmessage':未声明的标识符
'Ltitle':未声明的标识符
#include <iostream>
#include <string>
#include <Windows.h>
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
int takePrompt(int number, std::string message, std::string title) {
return MessageBox(0, TEXT(message), TEXT(title), MB_YESNO);
}
int main() {
if (takePrompt(0, "", "1") == IDYES) {
MessageBox(0, TEXT(""), TEXT("1.1"), MB_ICONEXCLAMATION);
} else {
if (takePrompt(0, "", "2") == IDYES) {
MessageBox(0, TEXT(""), TEXT("2"), MB_ICONEXCLAMATION);
} else {
while (takePrompt(0, "", "3") != IDNO) {
if (takePrompt(0, "", "4") == IDYES) {
MessageBox(0, TEXT(""), TEXT("4.2"), MB_ICONEXCLAMATION);
} else {
return 1;
}
}
}
}
return 0;
}
我尝试放入 std::string title、message,但没有解决问题。我只想要一个可重用的 MessageBox,我可以随时更改它并提供价值
您在这里滥用了
TEXT
。当它是一个将 ANSI 常量字符串更改为宽字符串的编译时宏时,您给它一个变量。
如果您的函数需要 8 位字符串,则不应尝试将它们转换为宽字符串,而应直接使用 ANSI 版本的
MessageBox
:
int takePrompt(int number, std::string message, std::string title) {
return MessageBoxA(0, message, title, MB_YESNO);
}