開発および実行環境:Win2k, VB6(SP5)
MDIの親子関係を持つ既存プログラムがあります。
この親ウィンドウが必要ないので、下のようなプログラムを書きました。
'親ウィンドウハンドル取得
iRet = FindWindow(vbNullString, "Test")
'子ウィンドウハンドル取得
iRet1 = GetWindow(iRet, GW_CHILD)
'孫ウィンドウハンドル取得
iRet2 = GetWindow(iRet1, GW_CHILD)
'孫ウィンドウの親子関係を消去
iRet3 = SetParent(iRet2, 0)
'親ウィンドウを非表示に
iRet4 = ShowWindow(iRet, SW_HIDE)
以上のプログラムを別プログラムに組み込むと、正常に動作します。
しかし、上記のプログラムをMDIプログラムに組み込むと、
親ウィンドウの非表示までうまくいくのですが、
独立した孫ウィンドウ上のボタン等がクリックできない状態になってしまいます。
Spyで確認しましたが、ウィンドウハンドルには間違いはありません。
APIの戻り値もエラーにはなっておりません。
何か処理が足りないのでしょうか?
どなたか助言お願い致します。
#最初からSDIでプログラムをかけばよさそうな話しですが、
#諸事情ありますので、そういった突っ込みはナシでお願いします。
その後、Spyでウィンドウの属性を確認したところ、
WM_EX_MDICHILDとかの属性が残っていたので、
SetWindowLongで属性を消す処理をしたのですが、状況変わらずでした。
仕方が無いので、
組み込みはあきらめて別プログラムから処理をします。
一応、解決としますが、
ちょくちょく見に来ますので、引き続き助言をお願い致します。
ツイート | ![]() |