リソースでダイアログを作成して、ダイアログエディタでコンボボックスを貼り付けると使えるようになります。
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); //データ保存
}
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();
}