トップページ > プログラム > 2015年11月29日 > c+9MHjtm

書き込み順位&時間帯一覧

6 位/200 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001020000002016



使用した名前一覧書き込んだスレッド一覧
694
デフォルトの名無しさん
Win32API質問箱 Build121 [転載禁止]©2ch.net
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
動画プログラミング [転載禁止]©2ch.net

書き込みレス一覧

Win32API質問箱 Build121 [転載禁止]©2ch.net
699 :694[sage]:2015/11/29(日) 12:46:39.72 ID:c+9MHjtm
>どうしたいのか書け

ふしなしのWS_POPUPを使って、いわゆるツールウィンドウを作りました
ツールウィンドウなので親ウィンドウより手前に表示される必要があり
ツールウィンドウのCreateWindowで親ウィンドウを設定して作成しました
この時点では期待通りの動作をします

しかし、後からツールウィンドウの親ウィンドウを変更する必要が出てきました
そこでSetParentでツールウィンドウの親を変更すると
WS_POPUPの所謂オーバーラップ的な独立したウィンドウではなくなり
WS_CHILD風の、親ウィンドウのクライアント内だけで表示されるウィンドウになります

WS_POPUPスタイルのオーバーラップ的な動作を維持したまま
親ウィンドウを変更するにはどうしたらよいでしょうか
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
90 :デフォルトの名無しさん[sage]:2015/11/29(日) 14:29:40.51 ID:c+9MHjtm
マークスイープ型のGCが必要かどうかについて、もう少し建設的な会話をしようよ
リソースを自動で開放してくれる機能は、無いよりは有った方が絶対に良い、と言い切ってよいよね
ただ、その方式が話の焦点だと思う

C++のスマポの参照カウンタ方式はデストラクタとの相性が良いし、RAIIもよく機能するし
開放されるタイミングもはっきりしているのて、手続き型言語と相性が良いし、軽い
ただし、循環参照があるとリークする
解決策として、片方をweak_ptrにするという方法が用意されている
weak_ptrは対象オブジェクトが開放されると勝手にヌルポみたいになるのでいろいろと悪用ができる

一方でマークスイープ系のGCは、循環参照があってもリークしない
しかし参照カウンタ方式に比べてマークスイープ系のGCが優れている点は、それだけ
重いし、いつ開放処理が実行されるか分からないので
リソース開放のタイミングを明確に行いたい場合のための別の仕組みが必要になった

どちらを選ぶ?
Win32API質問箱 Build121 [転載禁止]©2ch.net
701 :デフォルトの名無しさん[sage]:2015/11/29(日) 14:34:03.32 ID:c+9MHjtm
今のところ、以下の方法で対処していますが・・・

・あらかじめツールウィンドウに配置したいものを一つのWS_CHILDなウインドウ内に収めておく
・それをWS_POPUPなウィンドウに納める
・親を変更する場合は新たにWS_POPUPなウィンドウを作って中身を移し変える

一応動いてはいるんですが、あまりスマートとは言えませんね
Win32API質問箱 Build121 [転載禁止]©2ch.net
706 :デフォルトの名無しさん[sage]:2015/11/29(日) 21:03:09.00 ID:c+9MHjtm
皆さんの意見をまとめると
WS_CHILDでないとき、CreateWindowの引数で渡す親ウィンドウのパラメータは
親ウィンドウではなくオーナーウィンドウとして扱われる
(たしかにCreateWindowのMSDNに親ウィンドウまたはオーナーウィンドウって書いてありましたわ)
そして後からオーナーウィンドウを変更するAPIは用意されていない
ってことですね
失礼しました
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
524 :デフォルトの名無しさん[sage]:2015/11/29(日) 21:08:48.24 ID:c+9MHjtm
結構面倒そうだな
百億万 とか並びがおかしかったらパースエラーにしないといけないしな
動画プログラミング [転載禁止]©2ch.net
32 :デフォルトの名無しさん[sage]:2015/11/29(日) 23:03:33.75 ID:c+9MHjtm
カラーキーでも使って抜くか
それがいやならGIFかAPINGでも使えよ


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。