🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Q&A

解決済

2回答

2366閲覧

ファイル読み込み中という画面を表示するスレッド

Alyn

総合スコア51

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

0グッド

0クリップ

投稿2021/01/07 01:16

編集2021/01/07 05:24

MFCでファイル読み込み中に「ファイル読み込み中」と表示するウィンドウまたはダイアログを作成する方法を教えて下さい。
調べてみると関数がAfxBeginThread()やCreateThread()などあって、どれを使えば良いかわかりません。

同じようなwebページのリンクでも構いませんので、ご存じでしたら教えてください。

イメージは以下の通りです。

ファイル読み込み関数 {  ファイル読み込み開始  ファイル読み込みスレッド生成(ウィンドウ表示)   〜ファイル読み込み処理〜  ファイル読み込み終了  ファイル読み込みスレッド終了(ウィンドウ削除)  return; }
void dlg::FileLoadingThread() { //何もしない } void dlg::FileLoad() { DWORD id; //コンパイルエラー //overloaded - functionからLPTHREAD_START_ROUTINEに変換できない HANDLE thread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)FileLoadingThread, this, 0, &id); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/01/07 06:02

既に回答をいただいていますが、MFCを使う場合はAfxBeginThread一択です。 https://docs.microsoft.com/ja-jp/cpp/parallel/multithreading-with-cpp-and-mfc?view=msvc-160 CreateThreadと_beginthreadexの利用は考える必要ありません。どうしてもスレッドを使わなければいけないのでしょうか。 巨大なファイルであったり、読み込みに時間のかかる処理が伴わないのであれば、モーダル、またはモードレスダイアログのプロシージャ内で少しずつ読むなどすれば充分な場合もあります。ファイルによっては読む方が早すぎて、「ロード中」などの表示を実際より長く表示させる必要があったりします。
guest

回答2

0

ここに,以下のように書いてある.

...
any thread that uses MFC must be created by MFC. For example, a thread created by the run-time function _beginthread, _beginthreadex cannot use any MFC APIs.

To create a thread, call AfxBeginThread.
...

スレッドがMFCを使用するならば,AfxBeginThread() を使用せねばならない.
(そうでないなら他の方法でスレッドを生成してよい)

投稿2021/01/07 01:47

fana

総合スコア11985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

自己解決しました。

  1. スレッドとして呼び出す関数はstaticで宣言

static void FileLoadingThread();

  1. スレッド開始

HANDLE LoadThread = CreateThread(0, 0, LPTHREAD_START_ROUTINE)FileLoadingThread, this, 0, &Threadid);

  1. スレッド終了

while(WaitForSingleObject(LoadThread, 0) != WAIT_OBJECT_0){}

投稿2021/01/07 08:33

編集2021/01/07 09:02
Alyn

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問