はじめまして。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しても上記と同じ問題が発生します。
どの様にすればまともに表示できるのか、アドバイスをお願いします。
自己解決しました。
TreeCtrlの親をDeskTopWindowにすることでまともに表示出来る様になりました。
お騒がせしました。