複数のコントロールが存在するときのZオーダーと表示について – プログラミング – Home

複数のコントロールが存在するときのZオ...
 
通知
すべてクリア

[解決済] 複数のコントロールが存在するときのZオーダーと表示について


はっきねん
 はっきねん
(@はっきねん)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

はじめまして。MFC,VC++2005で、Vista上にて開発を行っています。
今画面上に複数のコントロールを配置しています。親子関係は以下のようになって
います。

MainFrm--+--ToolBar1--+--...
|
+--ToolBar2--+--...
|
+--SplitWnd(1,2)--+--...
|
+--MyView--+--TabCtrl--+--ListCtrl

ここで、ToolBar1にComboBoxを配置し、このプルダウンボタンを押すとテキスト
ボックスの代わりにTreeCtrlを表示しようとしています。

このTreeCtrlはToolBar1の初期化処理時に非表示でCreateしておき(各コントロール
を跨って描画する必要があるので、親はMainFrm)、ユーザ入力によりSetWindowPosを
起動して表示を行うようにしたいのですが、以下の問題が発生しています。

[問題]
TreeCtrlの表示は、通常のComboBoxのテキストボックスのように
ToolBar1,ToolBar2,TabCtrl,ListCtrl
の上に跨って表示したいのですが、一瞬全体が描画された後、TabCtrl,ListViewの
部分が再描画され、TreeViewの下部が消去されてしまいます。
(ToolBar1,ToolBar2の部分は正常に表示される)

ただしZオーダーは最前面にきているようでマウスカーソルを持っていくとTreeCtrl
の内容が部分ごとに再描画(ListCtrlの内容の上に上書き)されますし、アイテムの
選択やスクロール、項目の拡張等のTreeCtrlの通常の機能は使用可能なのですが、
表示はぐちゃぐちゃです。

[補足]
上の状況を改善しようとして、SetWindowPosを使用せず、MoveWindowを用いると表示
は正常に、各コントロールに跨って表示されます。
しかしZオーダーはTabCtrlの後ろに設定されているようで、TreeVie上の項目を
クリックすると下に表示されているListCtrlのアイテムが選択されてしまいます。

MovwWindowしたあと、NOMOVEでSetWindowPosしても上記と同じ問題が発生します。

どの様にすればまともに表示できるのか、アドバイスをお願いします。


引用未解決
トピックタグ
はっきねん
 はっきねん
(@はっきねん)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

自己解決しました。

TreeCtrlの親をDeskTopWindowにすることでまともに表示出来る様になりました。

お騒がせしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました