このコードを使用して、スレッドで開始されたメッセージボックスの奇妙な動作があります:
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!.