让程序崩溃时不弹出对话框的方法

1:SetErrorMode(SEM_NOGPFAULTERRORBOX);

强制进程终止运行

为防止UnhandledExceptionFilter显示异常消息框,可以调用下面的S e t E r r o r M o d e l函数,并向它传递一个SEM_NOGPFAULTERRORBOX标识符:

UINT SetErrorMode(UINT fuErrorMode);

然后,当调用UnhandledExceptionFilter函数来处理异常时,看到已经设置了这个标志,就会立即返回EXCEPTION_EXECUTE_HANDLER。这将导致全局展开并执行BaseProcessStart或BaseThreadStart中的处理程序。该处理程序结束进程。

(详见《windows核心编程》第25章)

 2:多使用SEH(结构化异常处理)

__try

         {

              ;

          }

__except(EXCEPTION_EXECUTE_HANDLER)

         {

            ;

         }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这可能是因为 `MessageDialog` 是一个模态对话框,而在 QML 中,模态对话框的弹需要一个独立的事件循环。在 Qt 6 中,这个事件循环的默认实现已经改变,可能导致了您的应用程序崩溃。 解决这个问题的方法之一是使用 `Popup` 组件替代 `MessageDialog`。`Popup` 组件不是模态的,因此不需要独立的事件循环。您可以在 `Popup` 中放置任何内容,包括自定义的对话框。例如: ``` import QtQuick 2.15 import QtQuick.Controls 2.15 Item { width: 200 height: 200 Button { text: "Show Dialog" onClicked: { dialog.visible = true } } Popup { id: dialog width: 200 height: 200 modal: true visible: false Rectangle { color: "white" anchors.fill: parent Text { text: "Hello, World!" anchors.centerIn: parent } Button { text: "Close" anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter onClicked: { dialog.visible = false } } } } } ``` 在这个例子中,当用户单击按钮时,`Popup` 会弹,显示一个自定义的对话框。用户可以点击对话框中的 "Close" 按钮来关闭对话框。 如果您仍然想使用 `MessageDialog`,则可以尝试在 `QApplication` 构造函数中设置 `Qt::AA_ShareOpenGLContexts` 标志: ``` #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); app.setAttribute(Qt::AA_ShareOpenGLContexts); // 设置 AA_ShareOpenGLContexts 标志 ... } ``` 这个标志可以帮助解决模态对话框的弹问题。但是,这个标志在某些情况下可能会导致其他问题,因此请注意进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值