dポイントプレゼントキャンペーン実施中!

こんばんは。
早速ですが質問です。
VC++ .NET MFCプロジェクトで
リソースエディタでダイアログにタブコントロールを貼り付け(1)、
そこに同じようにリソースエディタでリストコントロールとボタンを
貼り付けたダイアログを作りました(2)。
1のタブコントロール上に2をソースで貼り付け
表示させ、2のInitDialogとボタンクリックのイベントを作成して
Listコントロールに値を入れるということをしたのですが
リストコントロールの表示が消えてしまいます。
マウスでリストコントロールが貼りついている位置にカーソルを当てるとその部分がでてきます。
原因のお分かりになるかたご回答よろしくお願いします。

A 回答 (1件)

★アドバイス


・リストコントロールとボタンのダイアログ(2)のスタイルはどうなっていますか?
 リソースエディタで DS_CONTROL、WS_CHILD にチェックしていますか?
・普通のダイアログを貼り付けて表示させようとすると消えます。
 このとき、マウスでコントロールの上に乗せるとコントロールが浮かび上がります。
 よって、ダイアログ(2)のスタイルに DS_CONTROL、WS_CHILD を追加して下さい。

リソース:
IDD_PARENT DIALOGEX 0, 0, 300, 160
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "親ダイアログ"
FONT 8, "MS ゴシック", 400, 0, 0x80
BEGIN
 :
 タブコントロール
 :
END

IDD_DIALOG2 DIALOGEX 0, 0, 100, 80
STYLE DS_SETFONT | DS_CONTROL | WS_CHILD ←これが必要
FONT 8, "MS ゴシック", 400, 0, 0x80
BEGIN
 :
 リストコントロール
 ボタンコントロール
 :
END

最後に:
・リソースファイル(rc)を直接エディタなどで追加して下さい。
 リソースエディタでも出来ますが、項目名を忘れました。
 エディタで DS_CONTROL、WS_CHILD を追加した後にリソースエディタを起動して確認して下さい。
 チェックが true になっている項目が DS_CONTROL、WS_CHILD です。
・タブコントロールがある親のダイアログは普通に作成して、貼り付けるダイアログ(2)には
 DS_CONTROL、WS_CHILD を追加して下さい。よって、2つのダイアログをリソースファイルで
 定義します。決してタブコントロール上にソースで貼り付けてはいけません。
 1つのダイアログをコントロールと同じようにソースで貼り付けないといけないのです。
・以上。これで多分、上手く表示されると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!