- 【Delphi】Embarcaderoオッチャ その31【C++ビルダ】 [転載禁止]©2ch.net
495 :デフォルトの名無しさん[sage]:2015/12/13(日) 17:02:55.75 ID:rQ3iISGF - TWinControlのデストラクタDestroyで
if WindowHandle <> 0 then DestroyWindowHandle; I := ControlCount; while I <> 0 do begin Instance := Controls[I - 1]; Remove(Instance); Instance.Destroy; I := ControlCount; end; で、なんで先に自身のWinHandle破棄してきら子コントールのハンドル破棄するの? 行儀よく先に子を破棄してほしいんだな。
|
- 【Delphi】Embarcaderoオッチャ その31【C++ビルダ】 [転載禁止]©2ch.net
496 :デフォルトの名無しさん[sage]:2015/12/13(日) 17:07:52.02 ID:rQ3iISGF - WinAPI的にも親子関係のある2つのウィンドウハンドルで先に親ハンドル破棄したら
子ハンドルどんな状態になるのかしらんが、この行儀の悪い破棄の仕方でエラーが おきるな。仕方ないからフォームのOnDestroyで親子関係わざわざ切ってあげて 回避してるんだが。
|
- 【Delphi】Embarcaderoオッチャ その31【C++ビルダ】 [転載禁止]©2ch.net
497 :デフォルトの名無しさん[sage]:2015/12/13(日) 17:09:52.15 ID:rQ3iISGF - あー。そういや、ごめん。Winハンドルに所有関係みたいのあったけかな。
ちょっと調べてみる。
|
- 【Delphi】Embarcaderoオッチャ その31【C++ビルダ】 [転載禁止]©2ch.net
498 :デフォルトの名無しさん[sage]:2015/12/13(日) 17:12:13.15 ID:rQ3iISGF - If the specified window is a parent or owner window, DestroyWindow automatically destroys the associated child or owned windows
when it destroys the parent or owner window. The function first destroys child or owned windows, and then it destroys the parent or owner window. あー。やっぱあったな。すまん。
|
- 【Delphi】Embarcaderoオッチャ その31【C++ビルダ】 [転載禁止]©2ch.net
499 :デフォルトの名無しさん[sage]:2015/12/13(日) 17:29:12.13 ID:rQ3iISGF - 解決したわ。
カスタムコンポ作ってたがWM_DESTROYを処理しないとダメってことだったわ。 やっちっまった。わかりづらいんだよ。DestroyHandleとかオーバーライドしてたわ。
|