OCXでAfxBeginThreadを使用する方法を教えてください

解決


es  2004-03-24 19:54:47  No: 53391

はじめまして。esと申します。
1ヶ月程まえからVCを触っています初心者です。
よろしくお願いいたします。

現在OCXの作成をしているのですが、AfxBeginTreadを組み込むとプログラムの応答が無くなって帰ってこなくなってしまいます。
テストで簡単なOCXを作成しても同様の結果になってしまいます。
ソースは次の通りです。

BOOL CTest2App::InitInstance()
{
  BOOL bInit = COleControlModule::InitInstance();

  if (bInit)
  {
    // TODO: この位置にモジュールの初期化処理コードを追加してください。
    AfxMessageBox("test1");
    AfxBeginThread(WThread,this);
    AfxMessageBox("test3");
  }

  return bInit;
}

UINT CTest2App::WThread(LPVOID pParam)
{
  AfxMessageBox("test2");
  AfxEndThread(0);
  return 0;
}

exeで作成するとちゃんと動作します。
ocxで実行するとAfxMessageBox("test1")が動いた後、帰ってこなくなります。
どこがおかしいのでしょうか?


es  2004-03-25 18:58:03  No: 53392

自己レスです。

どうやらInitInstance()内でスレッドを作成しているのが悪いようですね。
試しに、DialogboxのOnCreate()内で同様の処理を記述し、コンテナでテストしたところ問題なく動作いたしました。
exeで動作し、ocxで動作しないのは相変わらず謎ですが・・・

お騒がせいたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加