はじめまして。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")が動いた後、帰ってこなくなります。
どこがおかしいのでしょうか?
自己レスです。
どうやらInitInstance()内でスレッドを作成しているのが悪いようですね。
試しに、DialogboxのOnCreate()内で同様の処理を記述し、コンテナでテストしたところ問題なく動作いたしました。
exeで動作し、ocxで動作しないのは相変わらず謎ですが・・・
お騒がせいたしました。
ツイート | ![]() |