メインウィンドウからモーダレスダイアログのハンドルを取得するには?

解決


なかみ  2006-07-12 14:40:52  No: 62498  IP: 192.*.*.*

VS2005 VC++ MFC SDIで開発しています。

newで生成されたモードレスダイアログが存在するかどうかを確かめる方法が分からず、質問させていただきました。

CTestDlg* testdlg = new CTestDlg;
if(testdlg->Create(IDD_ALERTDLG,NULL)==0){
  return false;
}

上記のように生成されたモードレスダイアログが存在するかどうかを確かめる関数を作りたいのですが、悩んでいます。
メンバ変数としてモードレスダイアログを宣言する方法がよく利用されていますが、今回は同じクラス(CTestDlg)のモードレスダイアログを複数個生成したいと思っています。
過去に生成されたCTestDlgのモードレスダイアログが生きているかどうかを調べたいです。

生成後にSetDlgCtrlIDでIDをつけてみましたが、メインウィンドウからはGetDlgItemやGetDescendantWindowで取得できませんでした。

どなたか分かる方がいらっしゃれば、教えて頂けないでしょうか。
宜しくお願い致します。

編集 削除
dairygoods  2006-07-12 15:51:29  No: 62499  IP: 192.*.*.*

> 生成後にSetDlgCtrlIDでIDをつけてみましたが、メインウィンドウからはGetDlgItemやGetDescendantWindowで取得できませんでした。

ポップアップウィンドウは、デスクトップの子になってしまうので、
EnumWindows で探すことになると思います。


単に存在するかどうかだけ調べたいなら、生存数変数を用意して、
CTestDlg を作ったら+1、捨てたら-1すれば分かります。

編集 削除
なかみ  2006-07-12 16:02:41  No: 62500  IP: 192.*.*.*

生存数変数を生成することでできました。
ありがとうございました。

編集 削除