Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么错误消息会暂停代码。如何阻止代码在C++;? 为什么C++中的错误消息会暂停代码,直到错误消息被关闭?这里有一个例子 #include <iostream> #include <windows.h> using namespace std; int main(){ MessageBox(nullptr, TEXT("Code paused"), TEXT("Code Paused"), MB_OK); // The code pauses at there cout << "Code unpaused" << endl; return 0; } #包括 #包括 使用名称空间std; int main(){ MessageBox(nullptr,TEXT(“代码暂停”),TEXT(“代码暂停”),MB_OK);//代码暂停在那里 cout_C++_Winapi - Fatal编程技术网

为什么错误消息会暂停代码。如何阻止代码在C++;? 为什么C++中的错误消息会暂停代码,直到错误消息被关闭?这里有一个例子 #include <iostream> #include <windows.h> using namespace std; int main(){ MessageBox(nullptr, TEXT("Code paused"), TEXT("Code Paused"), MB_OK); // The code pauses at there cout << "Code unpaused" << endl; return 0; } #包括 #包括 使用名称空间std; int main(){ MessageBox(nullptr,TEXT(“代码暂停”),TEXT(“代码暂停”),MB_OK);//代码暂停在那里 cout

为什么错误消息会暂停代码。如何阻止代码在C++;? 为什么C++中的错误消息会暂停代码,直到错误消息被关闭?这里有一个例子 #include <iostream> #include <windows.h> using namespace std; int main(){ MessageBox(nullptr, TEXT("Code paused"), TEXT("Code Paused"), MB_OK); // The code pauses at there cout << "Code unpaused" << endl; return 0; } #包括 #包括 使用名称空间std; int main(){ MessageBox(nullptr,TEXT(“代码暂停”),TEXT(“代码暂停”),MB_OK);//代码暂停在那里 cout,c++,winapi,C++,Winapi,消息框的功能就是这样设计的,这样它在消息关闭之前不会返回。这种设计通常很方便,因为它是模态对话框,这意味着从用户的角度来看,程序的状态在消息框关闭之前不会改变 尽管如此,程序仍不会停止。其他线程会执行,调用MessageBox的线程也会执行并处理所有窗口(您的窗口也是如此,而不仅仅是MessageBox窗口)的消息 因此,您可以将消息框移动到单独的线程,将其他代码移动到单独的线程,将代码移动到消息处理程序,或者编写自己的MessageBox。将代码移动到单独的线程是最实用的选项。根据:它显示一个

消息框的
功能就是这样设计的,这样它在消息关闭之前不会返回。这种设计通常很方便,因为它是模态对话框,这意味着从用户的角度来看,程序的状态在消息框关闭之前不会改变

尽管如此,程序仍不会停止。其他线程会执行,调用
MessageBox
的线程也会执行并处理所有窗口(您的窗口也是如此,而不仅仅是MessageBox窗口)的消息

因此,您可以将消息框移动到单独的线程,将其他代码移动到单独的线程,将代码移动到消息处理程序,或者编写自己的
MessageBox
。将代码移动到单独的线程是最实用的选项。

根据:它显示一个模式对话框,其中包含一个系统图标、一组按钮和一个brief应用程序特定消息,如状态或错误信息

因此,它创建了一个模式对话框,这意味着用户需要获取对话框返回的信息,以便进行进一步的操作

如果你想创建一个非阻塞对话框,我建议你把它放在一个单独的线程中

以下是示例:

#include <iostream>
#include <windows.h>
#include <thread>
using namespace std;

void fun()
{
    MessageBox(nullptr, TEXT("Code paused"), TEXT("Code Paused"), MB_OK); // The code pauses at there
}

int main() {
    thread t(fun);
    cout << "Code unpaused" << endl;
    t.join();
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
虚无乐趣()
{
MessageBox(nullptr,TEXT(“代码暂停”),TEXT(“代码暂停”),MB_OK);//代码暂停在那里
}
int main(){
线程t(乐趣);
cout如果要使用,需要确保在子线程结束之前主线程仍在工作

以下是一个示例:

#include <iostream>
#include <windows.h>
#include <thread>
using namespace std;

void fun()
{
    MessageBox(nullptr, TEXT("Code paused"), TEXT("Code Paused"), MB_OK); // The code pauses at there
}

int main() 
{
    thread t(fun);
    t.detach();

    cout << "Code unpaused" << endl;

    while (true);
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
虚无乐趣()
{
MessageBox(nullptr,TEXT(“代码暂停”),TEXT(“代码暂停”),MB_OK);//代码暂停在那里
}
int main()
{
线程t(乐趣);
t、 分离();

Cuth<代码> Measabox B/CODE>创建一个模态对话框。MaLTE意味着窗口块执行直到关闭。如果你想要一个无模式对话框,你必须自己建这个…这个问题不是关于C++的,而是关于Windows的。你的线程代码也没有更好,因为连接也阻止了执行。@ ReMyLeBeAu:我猜这一点是T。hat
不能忽略到的第一个参数。将该消息框移动到另一个线程只是一个非
NULL
参数,而不是“最实用的选项”陷入一片混乱,你再也无法逃脱。当你将消息框移动到一个单独的线程时,消息框将不会显示,直到你在代码中添加t.join();基本上延迟消息框显示的时间,如果你不添加t.join());代码将爆发错误。那么如何在不中断代码的情况下将代码移动到单独的线程?@MysteryMan386如果您想独立于线程而不中断代码,可以使用t.detach()。根据:。但您必须确保主函数的生命周期长于子线程,否则子线程无法正确运行。@mys模态对话框会阻止调用代码,直到对话框被取消。如果希望代码在对话框显示时继续执行,则需要非模态对话框(有关详细信息,请参阅)。尝试在单独的线程上运行模式消息框似乎失败,因为从
main
返回将终止进程,包括它生成的所有线程。当我运行t.detach()时;代码仍会在消息框处暂停,但这一次在关闭消息框后,应用程序会因以下消息而崩溃:已调用abort()。如何解决此问题?