精华内容
下载资源
问答
  • 组合框和列表框 combobox和com demo 基于对话框,后面全是默认设置 一直下一步,完成即可 修改二者的id 所有组合框和列表框都有一个索引,都是从0开始的 列表框控件 自带排序 只要大于-1,就是有当前选中的 .....

    组合框和列表框

    combobox和com

    demo

    基于对话框,后面全是默认设置

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一直下一步,完成即可
    在这里插入图片描述
    在这里插入图片描述

    修改二者的id

    所有组合框和列表框都有一个索引,都是从0开始的

    列表框控件
    自带排序

    在这里插入图片描述

    只要大于-1,就是有当前选中的

    给两个按钮添加点击事件
    在这里插入图片描述

    增加按钮
    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中Listbox控件的简单使用

    	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中listbox控件是为了显示一系列的文本,每个文本占一行。

    Listbox控件可以设置属性为:

    LBS_CHILD :(默认)子窗口

    LBS_Visible :(默认)可视

    LBS_Multiplesel :可选择多行

    LBS_Extendedsel :可以使用shift或ctrl选择多行

    LBS_SORT:所有行按字母顺序进行排序

    对Listbox进行操作:

    Int listbox.AddString ( LPCTSTR Str) :对listbox的首行添加一个str的文本行,即此时nIndex为0;

    Int listbox.DeleteString (uint nIndex) :删除listbox中第nIndex行的文本行,注意nIndex是从0起始的;

    int listbox.InsertString (uint xIndex, LPCTSTR Str):在listbox中第nIndex行插入一个str的文本行;

    Int listbox.GetCount ( ):获取listbox的行的总数目;

    Int listbox.GetCurSel ( ):得到listbox选中的文本行的行数。

    Void listbox.ResetContent ( ):清除listbox中的所有数据;

    Int listbox.GetCurCount ( ):获取listbox被选中的行的数目;

    Int listbox.FindString ( int nstart , LPCTSTR Str ):从第nstart行开始起进行查找,查找Str的文本行;

    Int listbox.SelectString ( int nstart, LPCTSTR Str ) :从第nstart行开始,选择包含Str字符串的那一行;

    对Listbox中某一行进行双击操作,要产生一个响应函数的步骤:

    > 在 BEGIN_MESSAGE_MAP() END_MESSAGE_MAP() 之间添加响应函数的消息映射,如函数名为CDlg::OnLbnDblClk,添加下面代码
    ON_LBN_DBLCLK(IDC_LIST1,&C
    Dlg::OnLbnDblClk) //IDC_LIST1为listbox控件的ID
    然后在CDlg.h中添加函数OnLbnDblClk()的声明 最后在CDlg::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);	//如果所删的元素后面没有了,那就选中设为第一项	
    	}
    
    	*/
    }
    
    展开全文
  • 我看使用的成员函数也相同,功能大致也相同,就是显示的风格不同?那显示的风格不同还不如设个切换风格的参数呢?
  • VC++练习之 组合框和列表框同步

    千次阅读 2012-02-17 11:52:49
    .h // MfcCtlTestDlg.h : header file // #pragma once // CMfcCtlTestDlg dialog class CMfcCtlTestDlg : public CDialog { // Construction public: CMfcCtlTestDlg(CWnd* pParent = NULL);

    .h
    // MfcCtlTestDlg.h : header file
    //
    
    
    #pragma once
    
    
    
    
    // CMfcCtlTestDlg dialog
    class CMfcCtlTestDlg : public CDialog
    {
    // Construction
    public:
    CMfcCtlTestDlg(CWnd* pParent = NULL);// standard constructor
    void Init();
    // Dialog Data
    enum { IDD = IDD_MFCCTLTEST_DIALOG };
    
    
    //members
    CStatic* m_label;
    CListBox* m_lstBox;
    CComboBox* m_comBox;
    
    
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
    
    
    
    // Implementation
    protected:
    HICON m_hIcon;
    
    
    // Generated message map functions
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
    public:
    afx_msg void OnCbnSelchangeCombotest();
    afx_msg void OnLbnSelchangeLsttest();
    };
    
    .cpp
    
    // MfcCtlTestDlg.cpp : implementation file
    //
    
    
    #include "stdafx.h"
    #include "MfcCtlTest.h"
    #include "MfcCtlTestDlg.h"
    
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    
    
    
    // CMfcCtlTestDlg dialog
    
    
    
    
    
    
    
    
    CMfcCtlTestDlg::CMfcCtlTestDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CMfcCtlTestDlg::IDD, pParent)
    {
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    
    void CMfcCtlTestDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    }
    
    
    BEGIN_MESSAGE_MAP(CMfcCtlTestDlg, CDialog)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_CBN_SELCHANGE(IDC_COMBOTEST, &CMfcCtlTestDlg::OnCbnSelchangeCombotest)
    ON_LBN_SELCHANGE(IDC_LSTTEST, &CMfcCtlTestDlg::OnLbnSelchangeLsttest)
    END_MESSAGE_MAP()
    
    
    
    
    // CMfcCtlTestDlg message handlers
    
    
    BOOL CMfcCtlTestDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    
    
    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);// Set big icon
    SetIcon(m_hIcon, FALSE);// Set small icon
    
    
    // TODO: Add extra initialization here
    this->Init();
    
    
    
    
    
    
    return TRUE;  // return TRUE  unless you set the focus to a control
    }
    
    
    // If you add a minimize button to your dialog, you will need the code below
    //  to draw the icon.  For MFC applications using the document/view model,
    //  this is automatically done for you by the framework.
    
    
    void CMfcCtlTestDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting
    
    
    SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
    
    
    // Center icon in client rectangle
    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;
    
    
    // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }
    
    
    // The system calls this function to obtain the cursor to display while the user drags
    //  the minimized window.
    HCURSOR CMfcCtlTestDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }
    
    
    
    
    
    
    void CMfcCtlTestDlg::Init(){
    this->m_comBox = (CComboBox*)GetDlgItem(IDC_COMBOTEST);//获得当前combobox句柄
    this->m_lstBox = (CListBox*)GetDlgItem(IDC_LSTTEST);
    this->m_label = (CStatic*)GetDlgItem(IDC_SHOWTEXT);
    CStringList list ;
    list.AddTail(_T("aaa"));
    list.AddTail(_T("bbb"));
    list.AddTail(_T("ccc"));
    list.AddTail(_T("ddd"));
    list.AddTail(_T("eee"));
    list.AddTail(_T("fff"));
    
    
    POSITION rPos;
    rPos = list.GetHeadPosition();
    while (rPos != NULL)
    {
       CString s= list.GetNext(rPos);
       this->m_comBox->AddString(s);
    }
    
    
    
    
    //
    
    
    
    
    POSITION rPos1;
    rPos1 = list.GetHeadPosition();
    while (rPos1 != NULL)
    {
       CString s= list.GetNext(rPos1);
       this->m_lstBox->AddString(s);
    }
    
    
    //free(list);
    
    
    }
    
    
    
    
    
    
    void CMfcCtlTestDlg::OnCbnSelchangeCombotest()
    {
    //this->m_comBox = (CComboBox*)GetDlgItem(IDC_COMBOTEST);//获得当前combobox句柄
    // this->m_lstBox = (CListBox*)GetDlgItem(IDC_LSTTEST);
    
    
     CString strCom;
     this->m_comBox->GetLBText(this->m_comBox->GetCurSel(),strCom);
    
    
    int i;
    for(i = 0;i < this->m_lstBox->GetCount();i ++){
     CString strLst;
     this->m_lstBox->GetText(i,strLst);
    
    
     if(strLst.Compare(strCom) == 0){
    this->m_lstBox->SetCurSel(i);
    设置标签内容   
    this->m_label->SetWindowTextW(strCom);
     }
    }
    
    
    
    
    // TODO: Add your control notification handler code here
    }
    
    
    void CMfcCtlTestDlg::OnLbnSelchangeLsttest()
    {
    
    
     CString strLst;
     this->m_lstBox->GetText( this->m_lstBox->GetCurSel(),strLst);
    
    
    int i;
    for(i = 0;i <  this->m_comBox->GetCount();i ++){
     CString strCom;
     this->m_comBox->GetLBText(i,strCom);
    
    
     if(strLst.Compare(strCom) == 0){
     this->m_comBox->SetCurSel(i);
    设置标签内容   
    this->m_label->SetWindowTextW(strLst);
     }
    }
    // TODO: Add your control notification handler code here
    }


    展开全文
  • MFC_组合框列表框

    2017-09-24 18:48:28
    组合框 CComboBox ...1.添加如图空间,并声称对应的组合框和列表框 编辑框的控件。 2.添加“添加”“删除”函数void Clb007Dlg::OnBnClickedBtnAdd() { // TODO: 在此添加控件通知处理程序代码 CStrin

    组合框 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);
        }
    }
    
    展开全文
  • 列表框和组合框

    2012-05-10 09:22:29
    vc 列表框 组合框
  • 下拉列表框和组合框

    2019-10-01 23:10:50
    CBN_CLOSEUP:组合框列表框组件被关闭,简易组合框不会发送该通知消息 CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息 CBN_DROPDOWN:组合框列表框组件下拉,简易式组合框不会...
    组合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下:
    
           CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息
           CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
           CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息
           CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
           CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发送该消息
           CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
           CBN_SELENDCANCEL:表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送
           CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用户确认了自己所作的选择
           CBN_KILLFOCUS:组合框失去了输入焦点
           CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
           CBN_SETFOCUS:组合框获得了输入焦点
    
           组合框控件的创建
    
          MFC将组合框控件的所有操作都封装到了CComboBox类中。
    
           我们在对话框中加入组合框时,可以往对话框模板中拖入Combo Box控件,而后添加CComboBox类型的控件变量使用,但如果我们想在程序中动态创建的话,就要使用CComboBox类的成员函数Create了。Create函数的原型如下:
    
    virtual BOOL Create(
       DWORD dwStyle,
       const RECT& rect,
       CWnd* pParentWnd,
       UINT nID 
    );
    
           大家可以看出,CComboBox类的Create成员函数同前面几个控件类的Create成员函数非常类似,dwStyle指定组合框控件的风格,rect为列表框弹出后组合框的位置和尺寸,pParentWnd是指向父窗口的指针,不能为NULL,nID指定组合框控件的ID。最后还是重点讲讲dwStyle参数。组合框控件的风格包括以下几种,并给出了相应说明:
    
           CBS_AUTOHSCROLL:使编辑框组件具有水平滚动的风格
           CBS_DISABLENOSCROLL:使列表框在不需要滚动时显示一个禁止的垂直滚动条
           CBS_DROPDOWN:指定一个下拉式组合框
           CBS_DROPDOWNLIST:指定一个下拉列表式组合框
           CBS_HASSTRINGS:指定一个含有字符串的自绘式组合框
           CBS_LOWERCASE:将编辑框和列表框中的所有文本都自动转换为小写字符
           CBS_NOINTEGRALHEIGHT:组合框的尺寸由应用程序而不是Windows 指定,通常,由Windows指定尺寸会使列表项的某些部分隐藏起来
           CBS_OEMCONVERT:使编辑框组件中的正文可以在ANSI 字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的
           CBS_OWNERDRAWFIXED:指定自绘式组合框,即由父窗口负责绘制列表框的内容,并且列表项有相同的高度
           CBS_OWNERDRAWVARIABLE:指定自绘式组合框,并且列表项有不同的高度
           CBS_SIIMPLE:指定一个简易组合框
           CBS_SORT:自动对列表框组件中的项进行排序
           CBS_UPPERCASE:将编辑框和列表框中的所有文本都自动转换为大写字符
    
           dwStyle参数可以是以上风格的组合。跟其他控件一样,创建时一般也还要指定WS_CHILD、WS_VISIBLE、WS_TABSTOP和WS_VSCROLL等风格。
    
           在对话框模板中直接添加组合框控件时,其属性页中的属性包含了以上风格,例如属性Uppercase设为True就相当于指定了CBS_UPPERCASE风格。
    
           CComboBox类的主要成员函数
    
          因为组合框是由编辑框和列表框组合而成的,所以组合框的操作和编辑框与列表框的操作有很多相似之处,同样的,CComboBox类的成员函数也和CEdit类与CListBox类的成员函数有很多相似之处,不但功能相似,甚至函数名和参数也很相似。鸡啄米下面大概讲解下CComboBox类的主要成员函数,更详细的内容可以参见MSDN。
    
           int GetCount( ) const;
           获取组合框控件的列表框中列表项的数量。
    
           int GetCurSel( ) const;
           获取组合框控件的列表框中选中项的索引,如果没有选中任何项,该函数返回CB_ERR。
    
           int SetCurSel(int nSelect);
           在组合框控件的列表框中选择某项。nSelect参数指定了要选择的列表项的索引,如果为-1则列表框中当前选择项被取消选中,编辑框也被清空。
    
           DWORD GetEditSel( ) const;
           获取组合框控件的编辑框中当前选择范围的起始和终止字符的位置。该函数返回一个32位数,低16位存放起始位置,高16位存放选择范围后第一个非选择字符的位置。如果该函数用于下拉列表式组合框时,会返回CB_ERR。
    
           BOOL SetEditSel(int nStartChar,int nEndChar);
           用于在组合框控件的编辑框中选择字符。nStartChar参数指定起始位置,nEndChar参数指定终止位置。
    
           DWORD_PTR GetItemData(int nIndex) const;
           获取组合框中指定项所关联的32位数据。nIndex参数指定组合框控件的列表框某项的索引(从0开始)。
    
           int SetItemData(int nIndex,DWORD_PTR dwItemData);
           为某个指定的组合框列表项设置一个关联的32位数。nIndex参数指定要进行设置的列表项索引。dwItemData参数指定要关联的新值。
    
           void GetLBText(int nIndex,CString& rString) const;
           从组合框控件的列表框中获取某项的字符串。nIndex参数指定要获取字符串的列表项的索引,CString参数用于接收取到的字符串。
    
           int GetLBTextLen(int nIndex) const;
           获取组合框控件的列表框中某项的字符串长度。nIndex参数指定要获取字符串长度的列表项的索引。  
    
           int GetTopIndex( ) const;
           获取组合框控件的列表框中第一个可见项的索引。
    
           int SetTopIndex(int nIndex);
           将组合框控件的列表框中某个指定项设置为可见的。nIndex参数指定了该列表项的索引。该函数成功则返回0,有错误发生则返回CB_ERR。
    
           BOOL LimitText(int nMaxChars);
           用于限制用户在组合框控件的编辑框中能够输入的最大字节长度。nMaxChars参数指定了用户能够输入文字的最大字节长度,如果为0则长度被限制为65535个字节。
    
           int AddString(LPCTSTR lpszString);
           为组合框控件中的列表框添加新的列表项。lpszString参数是指向要添加的字符串的指针。该函数的返回值如果大于等于0,那么它就是新列表项的索引,而如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。
    
           int DeleteString(UINT nIndex);
           删除组合框中某指定位置的列表项。nIndex参数指定了要删除的列表项的索引。该函数的返回值如果大于等于0,那么它就是组合框中剩余列表项的数量。如果nIndex指定的索引超出了列表项的数量则返回CB_ERR。
    
           int FindString(int nStartAfter,LPCTSTR lpszString) const;
           在组合框控件的列表框中查找但不选中第一个包含指定前缀的列表项。nStartAfter参数指定了第一个要查找的列表项之前的那个列表项的索引。lpszString指向包含要查找的前缀的字符串。该函数的返回值如果大于等于0,那么它是匹配列表项的索引,如果查找失败则返回CB_ERR。
    
           int InsertString(int nIndex,LPCTSTR lpszString);
           向组合框控件的列表框中插入一个列表项。nIndex参数指定了要插入列表项的位置,lpszString参数则指定了要插入的字符串。该函数返回字符串被插入的位置,如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。
    
           int SelectString(int nStartAfter,LPCTSTR lpszString);
           在组合框控件的列表框中查找一个字符串,如果查找到则选中它,并将其显示到编辑框中。参数同FindString。如果字符串被查找到则返回此列表项的索引,如果查找失败则返回CB_ERR,并且当前选择项不改变。
    
           此外,CComboBox类还继承了CWnd类的成员函数GetWindowText、SetWindowText等。

     

    转载于:https://www.cnblogs.com/IMyLife/p/4826125.html

    展开全文
  • 动态的填充列表框和组合框
  • 二 增加组合框和列表框 三 更改组合框和列表框的ID ID分别为:IDC_COMBO_COMM,IDC_LIST_DEMO,IDC_EDIT_INPUT 四 给列表框添加变量 五给按键添加代码 void CMFCApplicationBOXDlg::...
  • 列表框是CListBox类的对象,组合框是CComboBox的对象,滚动条是 CScrollBar 类的对象3、。 1、组合框 组合框(Combo Box)新建后可以修改里面的内容,需要把属性中的Type项改为Drop List即不能修改。 在组合框...
  • 组合框列表框

    2016-05-19 10:34:51
    组合框封装类:CComboBox列表框封装类CListBox首先将列表框和组合框都绑定控件变量,我们希望当按下添加按钮时,将数据从编辑框分别添加到列表框和组合框中去添加按钮代码:void Cdemo7Dlg::OnBnClickedButAdd() ...
  • 列表框和组合框的区别1、自动排序方式不同:当列表框不能同时显示所有项目的时候,将自动添加滚动条,使用户可以滚动查阅所有选项。组合框的风格取值定义了组合框的具体属性,包括是否自动排序,是否有滚动条。2、...
  • 摘要:VC/C++源码,界面编程,列表框,组合框,目录列表 VC++在列表框组合框中显示文件目录列表,源码实例包请下载。把EXE文件拷贝至任意目录中,双击运行,点击“显示文件目录列表”即可获取当前文件夹下的所有...
  • 将一个枚举绑定到组合框列表框的另一种简单方法
  • MFC之组合框列表框

    2020-08-07 23:09:40
    列表框的封装类:CListBox 设计初始界面 为组合框添加控件变量m_cmb_demo 为添加按钮添加点击事件 void CCLDemoDlg::OnBnClickedBtnAdd() { // TODO: 在此添加控件通知处理程序代码 //获得编辑框中的内容 ...
  • 组合框和列表框的区别如下:自动排序方式不同: 当列表框不能同时显示所有项目时候,将自动添加滚动条,使用户可以滚动查阅所有选项。组合框的风格取值定义了组合框的具体属性,包括是否自动排序,是否有滚动条。...
  • ACCESS窗体中创建组合框控件或列表框下拉选取office助:ACCESS窗体中有TextT改为组合框 1.在窗体设计模式中,选中Text9控件,右键-&... 然後窗体的组合框就可以下拉选取"合格"或"不合格"在窗体中,组合框和列表框有哪...
  • 组合框和列表框都可以在界面上同时显示多项内容,并且允许用户选中其中的某项内容,列表框还允许同时选择多项。这两种控件的使用,有很多相似之处;2.3.1 技术要点: Windows 中预先定义了一系列“CB_ ”开头的消息...
  • C++ MFC 列表框和组合框,C++ MFC
  • Java列表和组合框

    千次阅读 2018-08-15 13:43:02
    列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择。 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象。程序可以在列表框中加入多个文本选择项条目...
  • 本节视频录制了易语言保存组合框列表载入组合框列表项 易语言组合框保存列表项目数据源码: .版本 2 .支持库 spec .子程序 __启动窗口_创建完毕 置随机数种子 () .计次循环首 (10, ) 组合框1.加入项目 ...
  • VC++60 第十二章 列表框和组合框

    千次阅读 2016-10-13 17:49:48
    第十二章 列表框和组合框   列表框是显示一系列项供用户选择的控件,对选中的项可以进行后续的处理。用户选择可以是多项的,但本章的例程设计为单选的。组合框是一个编辑框带一个可以下拉的列表框,用户在...
  • 列表框和组合框的使用

    千次阅读 2010-06-24 15:21:00
    列表框是显示一系列项供用户选择的...   本章要点 1 列表框的设计、项的添加删除 2 组合框的设计使用   12.1 ListCombo程序运行时的界面功能     chap

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,229
精华内容 891
关键字:

组合框和列表框