コンボボックスとリストボックス
コンボボックスとcom
デモ
ダイアログボックスに基づいて、以下はすべてデフォルト設定です
次のステップに進み、終了します
両方のIDを変更します
すべてのコンボボックスとリストボックスには、0から始まるインデックスがあります
リストボックスコントロールに
は並べ替えが付属しています
-1より大きい限り、現在選択されています
2つのボタンにクリックイベントを追加する
增加按钮
void CdemoDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString strText;
GetDlgItemText(IDC_EDT_TEXT,strText);
m_cmb_demo.AddString(strText);
m_cmb_demo.SetCurSel(m_cmb_demo.GetCount()-1);//因为从0开始,所以最后一个是count-1,当前选中的是最后一个,即总个数减一
//添加后,默认是最后一个
m_lst_demo.AddString(strText);
m_lst_demo.SetCurSel(m_lst_demo.GetCount()-1);
}
删除按钮
void CdemoDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
int nIndex;
//组合框
nIndex = m_cmb_demo.GetCurSel();//得到索引 //每一项都会有一个索引
if(nIndex>-1)//说明有选中的项,下标从0开始,没有就是-1;
{
m_cmb_demo.DeleteString(nIndex);
if(nIndex<m_cmb_demo.GetCount())
m_cmb_demo.SetCurSel(nIndex);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
else
m_cmb_demo.SetCurSel(0); //如果所删的元素后面没有了,那就选中设为第一项
}
//列表框
nIndex = m_lst_demo.GetCurSel(); //每一项都会有一个索引
if(nIndex>-1)//说明有选中的项,下标从0开始,没有就是-1;
{
m_lst_demo.DeleteString(nIndex);
if(nIndex<m_lst_demo.GetCount())
m_lst_demo.SetCurSel(nIndex);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
else
m_lst_demo.SetCurSel(0); //如果所删的元素后面没有了,那就选中设为第一项
}
//删的时候,两边都选
}
キャリッジが出口に戻るのを防ぐ
void CdemoDlg::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类
//CDialogEx::OnOK();
}
MFCでのリストボックスコントロールの簡単な使用
http://blog.sina.com.cn/s/blog_6ca43ae701019h8k.html
http://blog.csdn.net/winerdaxian/article/details/6560060
http://www.jizhuomi.com/software/186.html
https://my.oschina.net/ranjiewen/blog/781090
https://blog.csdn.net/chengke1866/article/details/100695768?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242
MFCのリストボックスコントロールは一連のテキストを表示するためのもので、各テキストは1行を占めます。
リストボックスコントロールは、プロパティを次のように設定できます。
LBS_CHILD :(デフォルト)子ウィンドウ
LBS_Visible :(デフォルト)表示
LBS_Multiplesel:複数の行を選択できます
LBS_Extendedsel:shiftまたはctrlを使用して複数の行を選択できます
LBS_SORT:すべての行がアルファベット順にソートされます
リストボックスを操作します。
Int listbox.AddString(LPCTSTR Str):リストボックスの最初の行にstrテキスト行を追加します。つまり、この時点でnIndexは0です。
Int listbox.DeleteString(uint nIndex):リストボックス内のnIndex行のテキスト行を削除します。nIndexは0から始まることに注意してください。
int listbox.InsertString(uint xIndex、LPCTSTR Str):リストボックスのnIndex行にstrのテキスト行を挿入します。
Int listbox.GetCount():リストボックスの行の総数を取得します。
Int listbox.GetCurSel():リストボックスによって選択されたテキストの行数を取得します。
Void listbox.ResetContent():リストボックス内のすべてのデータをクリアします。
Int listbox.GetCurCount():リストボックスで選択された行の数を取得します。
Int listbox.FindString(int nstart、LPCTSTR Str):nstart行から検索を開始して、Strのテキスト行を検索します。
Int listbox.SelectString(int nstart、LPCTSTR Str):nstart行から開始して、Str文字列を含む行を選択します。
リストボックスの行をダブルクリックするには、応答関数を生成する手順を実行します。
>でBEGIN_MESSAGE_MAP()END_MESSAGE_MAP Cという関数としての応答関数()メッセージ・マッピングとの間に追加はDlg :: OnLbnDblClkは、次のコードが追加
ON_LBN_DBLCLK(IDC_LIST1、C& IDはDlg :: OnLbnDblClk)// IDC_LIST1リストボックスコントロールで
、次いでC関数OnLbnDblClk()ステートメントの最後にDlg.hを追加しますC()関数Dlg :: OnLbnDblClkを実装するコードを追加します
デフォルトに従って
ダブルクリックするだけで、コードを書く場所が見つかります
c ++ mfclistboxダブルクリックイベント
void CdemoDlg::OnLbnSelchangeListDemo()
{
//对每一行添加事件的方法
// 列表控件可以返回第几行,然后你可以通过行获得行内容。直接点击列表控件可添加点击事件。
//CString strText1;
//GetDlgItemText(IDC_LIST_DEMO,strText1);
MessageBox(_T("点击弹出一个框"));//弹出一个框
// MessageBox()
//列表框
//int nIndex1;
// nIndex1 = m_lst_demo.GetCurSel(); //每一项都会有一个索引
//m_lst_demo.DeleteString(nIndex1);
/*
if(nIndex1>-1)//说明有选中的项,下标从0开始,没有就是-1;
{
m_lst_demo.DeleteString(nIndex1);
if(nIndex1<m_lst_demo.GetCount())
m_lst_demo.SetCurSel(nIndex1);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
else
m_lst_demo.SetCurSel(0); //如果所删的元素后面没有了,那就选中设为第一项
}
*/
}