【发布时间】:2011-04-30 05:55:58
【问题描述】:
我正在使用带有 C++ 的 Win32 来制作一个可以通过带有 GetOpenFileName 函数的对话框加载文件内容的应用程序。一切正常,除非我关闭主窗口并且应用程序退出并将其打印到控制台:
线程“Win32 线程”(0xa50) 已退出,代码为 0 (0x0)。
但是主进程一直在运行,我必须在 Visual Studio 中明确地杀死它 任务管理器,我得到这个输出:
程序“[2620] DBSCAN.exe: Native”已退出,代码为 -1073741510 (0xc000013a)。
GetOpenFileName 是否会创建一个我必须自己终止的新线程?我检查了 msdn 和一些教程,我似乎没有做任何与标准用法不同的事情,打开文件,读取内容,关闭文件。
如果需要,我可以发布一些代码,欢迎任何帮助。
谢谢
【问题讨论】:
-
你使用钩子(OFN_ENABLEHOOK)吗?
-
不,只是使用 OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_READONLY 标志
-
您确定这是阻止您的进程终止的原因吗?也许分享一些代码会有所帮助(我刚刚使用了这个 API,没有遇到任何问题)。
-
尝试使用以下调试技术。当你得到“Win32 线程”(0xa50) 时,代码 0 (0x0) 已退出。单击调试器“暂停”并遍历现有线程。如果某个线程包含您的部分代码,请仔细查看每个线程的堆栈。
-
好吧,我发现了问题,我觉得很愚蠢,但是我指定了控制台 (/SUBSYSTEM:CONSOLE) 子系统选项,以便我可以输出到控制台,并忘记在发布配置中将其删除。无论如何感谢您的提示!
标签: c++ visual-studio user-interface winapi getopenfilename