c++ - 关闭程序时 TOpenDialog 中的异常
问题描述
我使用TOpenDialog
的时候,关闭程序后,模块出现异常Vcl.Forms
。
我正在使用的程序:
std::auto_ptr<TOpenDialog> OpenDialog (new TOpenDialog(this));
if ( OpenDialog->Execute() ){}
例外:'在 0x008133a4 的访问冲突:读取地址 0x000000c4'
突出显示的是 line: if not FHandleCreated then
function TApplication.GetDialogHandle: HWND;
begin
if not FHandleCreated then
Result := SendMessage(Handle, CM_DIALOGHANDLE, 1, 0)
else
Result := FDialogHandle;
end;
解决方案
我确认这个问题。我有使用 TOpenDialog 组件的项目。RAD C++ Builder 10.2(东京)没有问题。但是现在我在升级到 RAD C++ Builder 10.4 Update 2 (Sydney) 后遇到了同样的错误。我不使用带有 auto_ptr 的动态创建 TOpenDialog。相反,我只是在表单上拖动组件。所以代码很简单:
if(!OpenDialog1->Execute())
return;
打开这个对话框就足够了,什么都不做,按取消然后关闭应用程序。在那之后,我遇到了与 Jacek 相同的访问冲突。所以问题出在 C++ Builder 10.4
更新:问题不在于 C++ Builder 10.4 本身。当应用程序使用自定义样式(主题)时会出现错误。我刚刚在我的应用程序中禁用了自定义样式,并且 OpenDialog 没有错误。
推荐阅读
- vb.net - 用子类更新了一个类,它没有出现在其他类中
- javascript - discord.js SyntaxError:意外的令牌?
- python - tkinter 小部件操作
- python - Django M2M / 1 Django Admin Inline 中与 SELF 的多对多关系
- sql - 如何使用 GROUP BY 从 SQL 查询中获取百分比
- unix - 如何取消 memcached 中计划的 flush_all 命令?
- android - 如何避免在 jetpack compose 中创建多个视图模型?
- android - Android > Google Places 2.4.0 需要 Volley,它位于 jcenter() 中。但是,jcenter 已被废弃
- javascript - 如何在javascript中获取xhr数据
- sql - 您可以使用 PowerApps 将本地 Microsoft SQL Server 加载到云中吗?如果是这样,你怎么能这样做?