MFC_组合框,列表框

来源:互联网 发布:淘宝上怎么买到电视棒 编辑:程序博客网 时间:2024/05/17 21:58

组合框 CComboBox
列表框 CListBox
这里写图片描述
组合框:Combo Box
列表框:List Box
属性中“Sort”支持自动排序
1.添加如图空间,并声称对应的组合框和列表框 编辑框的控件。
2.添加“添加”“删除”函数

void Clb007Dlg::OnBnClickedBtnAdd(){    // TODO: 在此添加控件通知处理程序代码    CString strText;    GetDlgItemText(IDC_EDT_TEXT,strText);    m_cmd_demo.AddString(strText);    //添加后,设置为当前选中    //索引默认初始为0    m_cmd_demo.SetCurSel(m_cmd_demo.GetCount()-1);//添加之后,选中新添加的项目。新添加的是最后一个    m_lst_demo.AddString(strText);    m_cmd_demo.SetCurSel(m_cmd_demo.GetCount()-1);//添加之后,选中新添加的项目。新添加的是最后一个}void Clb007Dlg::OnBnClickedBtndel(){    // TODO: 在此添加控件通知处理程序代码    int nIndex;    nIndex = m_cmd_demo.GetCurSel();//当前选中的索引    if(nIndex>-1)    {        m_cmd_demo.DeleteString(nIndex);    //删除当前选中        if(nIndex < m_cmd_demo.GetCount())            m_cmd_demo.SetCurSel(nIndex);//删除前面一个后,后面自动上来,自动选中当前索引值的下一个补充上来的        else            m_cmd_demo.SetCurSel(0);    }    nIndex = m_lst_demo.GetCurSel();    if(nIndex >-1)    {        m_lst_demo.DeleteString(nIndex);        if(nIndex < m_lst_demo.GetCount())            m_lst_demo.SetCurSel(nIndex);        else            m_lst_demo.SetCurSel(0);    }}

Dlg.cpp

// lb007Dlg.cpp : 实现文件//#include "stdafx.h"#include "lb007.h"#include "lb007Dlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:    CAboutDlg();// 对话框数据    enum { IDD = IDD_ABOUTBOX };    protected:    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现protected:    DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){    CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// Clb007Dlg 对话框Clb007Dlg::Clb007Dlg(CWnd* pParent /*=NULL*/)    : CDialogEx(Clb007Dlg::IDD, pParent){    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void Clb007Dlg::DoDataExchange(CDataExchange* pDX){    CDialogEx::DoDataExchange(pDX);    DDX_Control(pDX, IDC_CMD_DEMO, m_cmd_demo);    DDX_Control(pDX, IDC_LST_DEMO, m_lst_demo);}BEGIN_MESSAGE_MAP(Clb007Dlg, CDialogEx)    ON_WM_SYSCOMMAND()    ON_WM_PAINT()    ON_WM_QUERYDRAGICON()    ON_BN_CLICKED(IDC_BTN_ADD, &Clb007Dlg::OnBnClickedBtnAdd)    ON_BN_CLICKED(IDC_BTN_dEL, &Clb007Dlg::OnBnClickedBtndel)END_MESSAGE_MAP()// Clb007Dlg 消息处理程序BOOL Clb007Dlg::OnInitDialog(){    CDialogEx::OnInitDialog();    // 将“关于...”菜单项添加到系统菜单中。    // IDM_ABOUTBOX 必须在系统命令范围内。    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);    ASSERT(IDM_ABOUTBOX < 0xF000);    CMenu* pSysMenu = GetSystemMenu(FALSE);    if (pSysMenu != NULL)    {        BOOL bNameValid;        CString strAboutMenu;        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);        ASSERT(bNameValid);        if (!strAboutMenu.IsEmpty())        {            pSysMenu->AppendMenu(MF_SEPARATOR);            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);        }    }    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动    //  执行此操作    SetIcon(m_hIcon, TRUE);         // 设置大图标    SetIcon(m_hIcon, FALSE);        // 设置小图标    // TODO: 在此添加额外的初始化代码    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE}void Clb007Dlg::OnSysCommand(UINT nID, LPARAM lParam){    if ((nID & 0xFFF0) == IDM_ABOUTBOX)    {        CAboutDlg dlgAbout;        dlgAbout.DoModal();    }    else    {        CDialogEx::OnSysCommand(nID, lParam);    }}// 如果向对话框添加最小化按钮,则需要下面的代码//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,//  这将由框架自动完成。void Clb007Dlg::OnPaint(){    if (IsIconic())    {        CPaintDC dc(this); // 用于绘制的设备上下文        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);        // 使图标在工作区矩形中居中        int cxIcon = GetSystemMetrics(SM_CXICON);        int cyIcon = GetSystemMetrics(SM_CYICON);        CRect rect;        GetClientRect(&rect);        int x = (rect.Width() - cxIcon + 1) / 2;        int y = (rect.Height() - cyIcon + 1) / 2;        // 绘制图标        dc.DrawIcon(x, y, m_hIcon);    }    else    {        CDialogEx::OnPaint();    }}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSOR Clb007Dlg::OnQueryDragIcon(){    return static_cast<HCURSOR>(m_hIcon);}void Clb007Dlg::OnBnClickedBtnAdd(){    // TODO: 在此添加控件通知处理程序代码    CString strText;    GetDlgItemText(IDC_EDT_TEXT,strText);    m_cmd_demo.AddString(strText);    //添加后,设置为当前选中    //索引默认初始为0    m_cmd_demo.SetCurSel(m_cmd_demo.GetCount()-1);//添加之后,选中新添加的项目。新添加的是最后一个    m_lst_demo.AddString(strText);    m_cmd_demo.SetCurSel(m_cmd_demo.GetCount()-1);//添加之后,选中新添加的项目。新添加的是最后一个}void Clb007Dlg::OnBnClickedBtndel(){    // TODO: 在此添加控件通知处理程序代码    int nIndex;    nIndex = m_cmd_demo.GetCurSel();//当前选中的索引    if(nIndex>-1)    {        m_cmd_demo.DeleteString(nIndex);    //删除当前选中        if(nIndex < m_cmd_demo.GetCount())            m_cmd_demo.SetCurSel(nIndex);//删除前面一个后,后面自动上来,自动选中当前索引值的下一个补充上来的        else            m_cmd_demo.SetCurSel(0);    }    nIndex = m_lst_demo.GetCurSel();    if(nIndex >-1)    {        m_lst_demo.DeleteString(nIndex);        if(nIndex < m_lst_demo.GetCount())            m_lst_demo.SetCurSel(nIndex);        else            m_lst_demo.SetCurSel(0);    }}
原创粉丝点击