我使用以下代码在线程中启动了消息框的奇怪行为:
DWORD WINAPI CreateMessageBox(LPVOID lpParam) {
MessageBoxA(NULL, (char*)lpParam, "", MB_OK);
return 0;
}
std::string msg = "Hello World";
CreateThread(NULL, 0, &CreateMessageBox, msg.c_str(), 0, NULL);
虽然此代码正常工作:
DWORD WINAPI CreateMessageBox(LPVOID lpParam) {
MessageBoxA(NULL, (char*)lpParam, "", MB_OK);
return 0;
}
CreateThread(NULL, 0, &CreateMessageBox, "Hello World", 0, NULL);
我不明白为什么当它不是变量时它会起作用,如果我将它更改为变量,则会显示一个空消息框,但我期望一个“Hello World!.