S-JIS[2004-09-01]

CComboBoxの関数

リソースでダイアログを作成して、ダイアログエディタでコンボボックスを貼り付けると使えるようになります。
ClassWizardでCComboBoxコントロールとして変数を割り当てておき、それを扱うには以下の関数を使います。

関数名 説明
InsertString リストの先頭や途中に文字列を追加する。 m_Combo.InsertString(0,"追加したい文字列");
AddString リストの最後尾に文字列を追加する。 m_Combo.AddString("追加したい文字列");
FindStringExact リストの中から、完全に一致する文字列を検索する。 int n = m_Combo.FindStringExact(-1,"探したい文字列");
SetCurSel リストの中の1つを選択する。
CB_ERRを渡すと、選択解除される。
m_Combo.SetCurSel(n);
GetWindowText エディットボックス部分の文字列を取得する。 CString str;
m_Combo.GetWindowText(str);
GetCount リスト内の文字列の個数を返す。 int count = m_Combo.GetCount();
GetLBText リスト内の文字列を返す。 CString str;
m_Combo.GetLBText(n, str);

リストに無い時にだけ追加する例

void CDs4PassDlg::AddFile(CString& file)
{
//m_FileNameは、CComboBox(ダイアログ上のコンボボックス)

	UpdateData(TRUE); //データ取得

	int n=m_FileName.FindStringExact(-1,file);
	if(n==CB_ERR){ //見つからなかったとき
		n=m_FileName.InsertString(0,file);
	}
	m_FileName.SetCurSel(n);

	UpdateData(FALSE);	//データ保存
}

コンボボックスの内容をINIファイルへ保存する例

void CDs4PassDlg::OnClose() 
{
	CWinApp *pApp=AfxGetApp();

	UpdateData(TRUE); //データ取得

	CString file;m_FileName.GetWindowText(file);
	pApp->WriteProfileString("FILE","EDITBOX",file);

	int count=m_FileName.GetCount();
	pApp->WriteProfileInt("FILE","COUNT",count);

	for(int i=0;i<count;i++){
		CString file;m_FileName.GetLBText(i,file);
		CString entry;entry.Format("LIST%d",i);
		pApp->WriteProfileString("FILE",entry,file);
	}

	CDialog::OnClose();
}

VC++ページへ戻る / 技術メモへ戻る
メールの送信先:ひしだま