タブ コントロールを使用してダイアログを作成しています。各タブには異なるコントロール セットが表示されるはずなので、ページのように動作するようにリソース エディターで子ダイアログ ボックスを作成しました。
これを行うには、この投稿の手順を使用しました。
リソース エディターで、境界線のないダイアログ ボックスを作成し、スタイルを に設定しChild
、システム メニューを削除し、フラグControl
とControl Parent
を に設定しましたtrue
。
私の子ダイアログボックスの手順ではWM_INITDIALOG
、追加EnableThemeDialgTexture(handleOfmyDialog, ETDT_ENABLETAB);
して返すことで処理しましたTRUE
。いいえWM_ERASEBKGND
、WM_PAINT
またはWM_CTLCOLORDLG
オーバーライドされています。
CreateDialog
タブコントロールを含むメインダイアログボックスで、関数を使用して「子ダイアログ」を作成し、MoveWindow
それらを適切に配置するために使用しました。
またはのEndDialog
「子ダイアログ」を破棄するために使用しませんでしたが、自動的に破棄されると思います。IDCANCEL
WM_CLOSE
これをすべて行うために、Windows 8.1 で Visual Studio 2013 を使用しました。
Windows 7 と Windows 8.1 では問題ないように見えますが、タブ コントロールの背景色がダイアログ ボックスのデフォルトの背景色と似ているため、私の目がいたずらをしているのかもしれません。この問題は、次の図に示すように、Windows XP で最もよく見られます。
「子ダイアログ」(およびチェックボックス/トラックバー/ラジオボタン/静的コントロールなどの子コントロール)の背景色を透明にする(タブコントロールの背景色と一致させるにはどうすればよいですか?)
ありがとうございました。