0

GetOpenFileName関数を使用すると、多くのスレッドがアプリケーションに割り当てられることに気付きました。ダイアログが閉じられて関数が戻った後、これらを削除するにはどうすればよいですか? これらのスレッドで、アプリケーションをクラッシュさせないエラーも経験SIGSEGVしましたが、どこからともなく出てきて、後で深刻なメモリの問題を引き起こす可能性があるため、依然として迷惑であり、win32 API にもこのような欠陥があってはなりません。私は何か間違ったことをしていますか?

また、私は c/c++ の初心者なので、あまり難しく考えないでください。

私のコード:

OPENFILENAME open;
ZeroMemory(&open, sizeof(open));
char szFileName[2048] = {};

open.lStructSize = sizeof(OPENFILENAME);
open.hwndOwner = NULL;
open.lpstrFilter = "Képek\0*.jpg;*.jpeg;*.gif;*.png;*.bmp\0\0";
open.lpstrFile = szFileName;
open.nFileOffset = 1;
open.nMaxFile = 2048;
open.lpstrTitle = "Képek kiválasztása..";
open.Flags = OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST;

std::string links = "";
if (GetOpenFileName(&open)) {
    ...
}
4

1 に答える 1

2

それらのスレッドについてできることは何もありません。ダイアログは、OS 自体によって管理されるいくつかのワーカー スレッドを作成します。また、サード パーティ製の Explorer プラグインがインストールされている可能性もあります。これは、ダイアログが Explorer を使用することによって間接的に読み込まれ、独自のスレッドを作成します。ダイアログがコードをクラッシュさせない限り、余分なスレッドは無視してください。これらは、アプリには関係のない OS 層のスレッドです。

于 2013-07-29T23:23:58.727 に答える