複数コントロールのリサイズについて

解決


yoshi  2007-01-01 20:01:11  No: 64135  IP: 192.*.*.*

みなさん、こんにちは yoshiと申します。

1月1日から質問ですみません・・・
今、親ダイヤログの内に複数のコントロールを持つソフトを作成しています。
複数のコントロールとはリソースエディタで作成したツリービュー、リストビュー、エディットボックスです。

親ダイヤログの大きさを変えるとWM_SIZEを捕まえてそれぞれのサイズを
変更して親ダイヤログの内側一杯に表示できるようにはなったのですが
子供同士が接している境界領域をドラッグしてサイズを変更したいのです
が、方法がわかりません

エクスプローラーだと左のツリー表示領域と右の表示領域の間に来ると
マウスの形が ←→ になってそこで左ドラッグすると左右に移動できます
ね、これは普通どのような処理をするのかヒントでも与えていただけると
ありがたいです。このサイトを含め検索しまくったのですがヒントも見つ
けることができませんでした。

よろしくおねがいします。m(__)m

環境は
WindowsXP
Visual C++ 6.0
SDK
です。

編集 削除
瀬戸っぷ  2007-01-01 22:04:52  No: 64136  IP: 192.*.*.*

> エクスプローラーだと左のツリー表示領域と右の表示領域の間に来ると
> マウスの形が ←→ になってそこで左ドラッグすると左右に移動できます
> ね、これは普通どのような処理をするのかヒントでも与えていただけると
> ありがたいです。このサイトを含め検索しまくったのですがヒントも見つ
> けることができませんでした。

スプリッターウィンドウとか言ったりしますかね。
スプリッターコントロールかな???

コモンコントロールの類にはないので、自力で作ることになるのでしょうか…
(MFCならあるのかな?)

想像ですが…
子ウィンドウを隙間を空けるカタチで配置しておく。
WM_NCHITTESTでHTNOWHEREの戻りを返す。
(カーソルも自前で変更? LoadImage()でOCR_SIZENSかOCR_SIZEWEで取れるかと。)
WM_LBUTTONDOWNからWM_MOUSEMOVE〜WM_LBUTTONUPでドラッグ処理しつつサイズ変更。
といったところでしょうか??

上記の方法だと手間かかりますね…
他に方法あるのかな??

編集 削除
yoshi  2007-01-02 08:59:50  No: 64137  IP: 192.*.*.*

瀬戸っぷさん おはようございます。

yoshiです。
アドバイスありがとうございます。


> スプリッターウィンドウとか言ったりしますかね。
> スプリッターコントロールかな???

> コモンコントロールの類にはないので、自力で作ることになるのでしょうか…
> (MFCならあるのかな?)

> 想像ですが…
> 子ウィンドウを隙間を空けるカタチで配置しておく。
> WM_NCHITTESTでHTNOWHEREの戻りを返す。
> (カーソルも自前で変更? LoadImage()でOCR_SIZENSかOCR_SIZEWEで取れるかと。)
> WM_LBUTTONDOWNからWM_MOUSEMOVE〜WM_LBUTTONUPでドラッグ処理しつつサイズ変更。
> といったところでしょうか??

> 上記の方法だと手間かかりますね…
> 他に方法あるのかな??

スプリッタという言葉で再度検索するといくつか情報がでてきました。
でも SDKで処理するとなると瀬戸っぷさんがおっしゃっているように
結構手間がかかるようです。

でも、おかげさまでおぼろげながらイメージが湧いてきましたので
これから先は自力で進めそうです。
瀬戸っぷさん、ありがとうございます!

編集 削除
yoshi  2007-01-02 22:27:37  No: 64138  IP: 192.*.*.*

解決チェックを付け忘れました

編集 削除