コンボボックスで選択される文字自体が映らず

[戻る]
たかし 2009/04/05(日) 11:27:22
下記のようなダイアログボックスを作ったのですが、
デフォルトおよび選択文字も表示されないし、
期待するデフォルト自身もプログラムの中で拾えていません。
まったく、ブランクなのです。

どこをなおせばいいでしょうか?

#define  IDC_E1   1000
#define  IDC_E2   1002
#define  IDC_E3   1004

LPCTSTR combo_Ans1[]   = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
LPCTSTR combo_Ans2[]   = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
LPCTSTR combo_Ans3[]   = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};

int     L1;

extern  HANDLE   ghInst;
extern  HWND     hGWnd;
int     gMode;
char    gQuestion[128]  = "Question";
char    gQuestion1[128] = "Question1";
char    gQuestion2[128] = "Question2";
char    gQuestion3[128] = "Question3";

char    gAnswer1[128] = "1";               
char    gAnswer2[128] = "10";             
char    gAnswer3[128] = "100";          


// For 3 ComboBoxes

DIALOG_X DIALOG DISCARDABLE  0, 0, 200, 120
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "ダイアログ"
FONT 9, "MS Pゴシック"
BEGIN

    DEFPUSHBUTTON   "OK",IDOK,150,30,40,12
    PUSHBUTTON      "キャンセル",IDCANCEL,150,50,40,12
    LTEXT           "Edit",IDC_EDIT1,50,30,50,10
    LTEXT           "Edit",IDC_EDIT2,50,60,50,10

   COMBOBOX         IDC_E1,130,60,50,50,CBS_DROPDOWN | WS_VSCROLL |  WS_GROUP 
| WS_TABSTOP                                
    LTEXT           "Edit",IDC_EDIT4,50,80,50,10

   COMBOBOX         IDC_E2,130,80,50,50,CBS_DROPDOWN | WS_VSCROLL |  WS_GROUP 
| WS_TABSTOP                            
    LTEXT           "Edit",IDC_EDIT6,50,100,50,10

    COMBOBOX        IDC_E3,130,100,50,50,CBS_DROPDOWN | WS_VSCROLL |  WS_GROUP 
| WS_TABSTOP                             

END

しま 2009/04/05(日) 15:19:32
提示している情報量が少な過ぎてどこを直せばいいのかあなた以外に
誰にも分からないでしょう

>#define  IDC_E1   1000
>#define  IDC_E2   1002
>#define  IDC_E3   1004
がどのソース *.cpp/*.c , *.h に書いてあるのかが不明

>// For 3 ComboBoxes
>
>DIALOG_X DIALOG DISCARDABLE  0, 0, 200, 120
これ以下の部分がリソースの一部なのかどうかも不明

>LPCTSTR combo_Ans1[] = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
>LPCTSTR combo_Ans2[] = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
>LPCTSTR combo_Ans3[] = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
から
>char    gAnswer3[128] = "100";
までがどのソース *.cpp/*.c , *.h の一部なのかも不明

コンボボックス IDC_E1 のリスト部にどういう文字列が入れたいのかも不明

更に、開発環境についての記述もない

もう少しあなた以外の他人に答え易い質問の仕方を学んでくださいね

たかし 2009/04/05(日) 17:46:45
説明不足ですみません。
下記が全部1ソースに入っている感じです。
あえて、リスト部に1とか2とか3とか、マニュアルで入れると
それは表示されて、文字として受け付けもするのですが、
デフォルトでの表示
(この場合は、
 1番目の箱に1、
 2番目の箱に10、
 3番目の箱に100、
 を期待しています。)
 も、選択文字(この場合は、0.1,0.2,0.3、、、、)
 も表示されません。まったくのブランクなのです。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


#define  IDC_E1   1000
#define  IDC_E2   1002
#define  IDC_E3   1004

LPCTSTR combo_Ans1[]   = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
LPCTSTR combo_Ans2[]   = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};
LPCTSTR combo_Ans3[]   = {"0.1" "0.2", "0.3", "0.5", "1", "2",  "3", "4", "5"};

int     L1;

extern  HANDLE   ghInst;
extern  HWND     hGWnd;
int     gMode;
char    gQuestion[128]  = "Question";
char    gQuestion1[128] = "Question1";
char    gQuestion2[128] = "Question2";
char    gQuestion3[128] = "Question3";

char    gAnswer1[128] = "1";               
char    gAnswer2[128] = "10";             
char    gAnswer3[128] = "100";

::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::

if  (!DialogBox(ghInst,   (LPCTSTR)DIALOG_3,  hGWnd,  DlgProc3))  
    return  FALSE;

::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::

BOOL   CALLBACK  DlgProc3(HWND  hDlg,  UINT  message,   WPARAM  wParam,  
LPARAM  lParam)
{
    switch  (message)  
    {
        case   WM_INITDIALOG:
           SetDlgItemText  (hDlg,   IDC_EDIT1,   (LPSTR)gQuestion);
      SetDlgItemText  (hDlg,   IDC_EDIT2,   (LPSTR)gQuestion1);
      SetDlgItemText  (hDlg,   IDC_EDIT4,   (LPSTR)gQuestion2);
      SetDlgItemText  (hDlg,   IDC_EDIT6,   (LPSTR)gQuestion3);

           for (L1=0;L1<10;L1++)                 
      {
           SendMessage(GetDlgItem(hGWnd, IDC_EDIT3),   CB_INSERTSTRING, 
(WPARAM)L1, (LPARAM)combo_Ans1[L1]);
           SendMessage(GetDlgItem(hGWnd, IDC_EDIT5),   CB_INSERTSTRING, 
(WPARAM)L1, (LPARAM)combo_Ans2[L1]);
           SendMessage(GetDlgItem(hGWnd, IDC_EDIT7),   CB_INSERTSTRING, 
(WPARAM)L1, (LPARAM)combo_Ans3[L1]);
      }

      return   TRUE;

case   WM_COMMAND:
      switch (wParam)   
           {
        case  IDOK:
               GetDlgItemText (hDlg,  IDC_EDIT3,   (LPSTR)gAnswer1,  16);
               GetDlgItemText (hDlg,  IDC_EDIT5,   (LPSTR)gAnswer2,  16);
               GetDlgItemText (hDlg,  IDC_EDIT7,   (LPSTR)gAnswer3,  16);
          EndDialog  (hDlg,  TRUE);
          return TRUE;
        case  IDCANCEL:
               EndDialog (hDlg,  FALSE);
               return  FALSE;
             default:
          break;
          }
     }
      return  FALSE;
}

しま 2009/04/06(月) 00:54:02
>           for (L1=0;L1<10;L1++)                 
>      {
>           SendMessage(GetDlgItem(hGWnd, IDC_EDIT3),   CB_INSERTSTRING, 
>(WPARAM)L1, (LPARAM)combo_Ans1[L1]);
>....//途中略しています
>      }
この部分は何をしたいのですか?IDC_EDIT3 は何ですか?仮にエディットボックス
だとして同じエディットボックスに違う値を10個入れてどう見せたいのでしょうか?
ひょっとしたら IDC_EDIT3 はコンボボックスですか?
コンボボックスだとしても IDC_E1, EDC_E2, EDC_E3 との関係は何ですか?

何故、開発環境について書かないんですか?

しま 2009/04/06(月) 08:51:43
>コンボボックスだとしても IDC_E1, EDC_E2, EDC_E3 との関係は何ですか?

はコンボボックスだとしても IDC_E1, IDC_E2, IDC_E3 との関係は何ですか?
の打ち間違いでした

PATIO 2009/04/06(月) 11:02:38
まずは、このページにある「使用上の注意」を読んでいただいて

次に状況をよく整理して説明の順番を良く考えてみましょう。

まず、全体の構成を挙げ、どういう風に動作して欲しいと考えているのかを
説明しましょう。
次に現状どういう動作をしているのかを説明して
まずはどの部分をどうしたいのかを説明します。

説明がバラバラだと全体としては情報が揃っていても
読む側からすれば、よくわからない状況になります。

あと、IDEの操作とかライブラリの関係で開発環境は明示しておかないと
話が噛み合わない事が有りますので必ず提示してください。

古いスレッドには追加発言できません。