精华内容
下载资源
问答
  • 第一步:向界面中添加“列表框控件”,用鼠标拖进来   第二步:设置列表框的属性,在样式中,选择“报告“----默认情况下是图标,这样是不会显示表格的,所以这里需要选择报告形式 第三步:创建列表框...
      4728人阅读  评论(4)  收藏  举报

    第一步:向界面中添加“列表框控件”,用鼠标拖进来

        


    第二步:设置列表框的属性,在样式中,选择“报告“----默认情况下是图标,这样是不会显示表格的,所以这里需要选择报告形式

    第三步:创建列表框的成员变量,


    这里需要注意的是:列表框的成员变量名一般是m_ctllist1,m_ctllist2,之类的。而且要选择contra了变量。

    还要注意,value类型的成员变量用来代表值,如编辑框的成员变量必须选择value类型的变量,用以代表类表框中输入的字符串。


    第四步:向dialog的初始化函数中,添加列表框的代码。


    进入初始化函数后,

    要添加的代码:

    DWORD dwStyle = m_ctllist.GetExtendedStyle();                    //添加列表框的网格线!!!

        dwStyle |= LVS_EX_FULLROWSELECT;            
        dwStyle |= LVS_EX_GRIDLINES;                
        m_ctllist.SetExtendedStyle(dwStyle);



        m_ctllist.InsertColumn(0,"姓名",LVCFMT_LEFT,80);              //添加列标题!!!!  这里的80,40,90用以设置列的宽度。!!!LVCFMT_LEFT用来设置对齐方式!!!
        m_ctllist.InsertColumn(1,"性别",LVCFMT_LEFT,40);
        m_ctllist.InsertColumn(2,"年龄",LVCFMT_LEFT,40);
        m_ctllist.InsertColumn(3,"电话",LVCFMT_LEFT,90);

        m_ctllist.InsertColumn(4,"工作单位",LVCFMT_LEFT,140);

    第五步:添加完代码之后,编译,效果图如下。

                            

    展开全文
  • VC6.0 MFC 列表框 列表控件 添加 修改 删除 写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧! 一、未卜先知 1、编译运行后,点击“学生档案信息”,界面如下图所示...

    VC6.0 MFC 列表框 列表控件 添加 修改 删除

    写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧!

    一、未卜先知

    1、编译运行后,点击“学生档案信息”,界面如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    2、添加记录,如下图所示。
    在这里插入图片描述
    3、修改记录,如下图所示。
    在这里插入图片描述
    4、删除记录,如下图所示。
    在这里插入图片描述
    二、实现步骤

    1、新建一个工程,如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    2、建立菜单,并给菜单做一个消息响应函数,如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    3、接下来在对话框中进行相应操作,具体步骤如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4、建立类向导,取类名“CDlgStuInfo”,如下图所示。
    在这里插入图片描述
    5、接下来,我们通过编程添加一些数据。首先在CdlgStuInfo中右击添加消息响应句柄,如下图所示。
    在这里插入图片描述
    6、在OnInitDialog() 中添加代码,如下。

    BOOL CDlgStuInfo::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    	// TODO: Add extra initialization here
    	DWORD dwStyle;
    	dwStyle = m_listCtrl.GetExtendedStyle();
    	dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  | LVS_EX_ONECLICKACTIVATE;
    	m_listCtrl.SetExtendedStyle(dwStyle);
    	return TRUE;  // return TRUE unless you set the focus to a control
    	       // EXCEPTION: OCX Property Pages should return FALSE
    }
    

    记得要把头文件:#include "DlgStuInfo.h"对话框类嵌入进去!

    7、在OnMStuInfo()中添加代码,如下。

    void CChapterView::OnMStuInfo() 
    {
    	// TODO: Add your command handler code here
    	CDlgStuInfo dlg_stuInfo;
    	dlg_stuInfo.DoModal();
    }
    

    8、此时,运行结果如下图所示。
    在这里插入图片描述
    9、在第6步的基础上,继续往OnInitDialog() 中添加代码,如下。

    BOOL CDlgStuInfo::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    	// TODO: Add extra initialization here
    	DWORD dwStyle;
    	dwStyle = m_listCtrl.GetExtendedStyle();
    	dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  | LVS_EX_ONECLICKACTIVATE;
    	m_listCtrl.SetExtendedStyle(dwStyle); //设置显示风格
    	m_listCtrl.InsertColumn(0,"学号",LVCFMT_CENTER,100); //第一个参数是字段的编号
    	m_listCtrl.InsertColumn(1,"姓名",LVCFMT_CENTER,100); //第二个参数是字段的名字
    	m_listCtrl.InsertColumn(2,"性别",LVCFMT_CENTER,100); //第三个参数是字段的显示风格
    	m_listCtrl.InsertColumn(3,"专业",LVCFMT_CENTER,100); //第四个参数是字段的宽度
    	m_listCtrl.InsertColumn(4,"班级",LVCFMT_CENTER,100); //设置表格字段名
    	m_listCtrl.InsertItem(0,"0001"); //0即表格中的第一行
    	m_listCtrl.SetItemText(0,1,"张三");
    	m_listCtrl.SetItemText(0,2,"男");
    	m_listCtrl.SetItemText(0,3,"电子信息");
    	m_listCtrl.SetItemText(0,4,"202001"); //在表格中添加数据,插入一行记录
    	m_listCtrl.InsertItem(1,"0002");
    	m_listCtrl.SetItemText(1,1,"李丽");
    	m_listCtrl.SetItemText(1,2,"女");
    	m_listCtrl.SetItemText(1,3,"计算机");
    	m_listCtrl.SetItemText(1,4,"202002");
    	return TRUE;  // return TRUE unless you set the focus to a control
    	        // EXCEPTION: OCX Property Pages should return FALSE
    }
    

    10、新建一个对话框,具体如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    11、紧接着建立它所对应的类,如下图所示。
    在这里插入图片描述
    12、双击“添加记录”按钮,把“添加一条学生记录信息”这个对话框给调出来,如下图所示。
    在这里插入图片描述
    13、把“添加一条学生记录信息”对话框的头文件:#include "Dlg_StuInfoAppe.h"嵌入进来。然后在OnBTNAppe()中编程。

    void CDlgStuInfo::OnBTNAppe() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoAppe dlg_stuInfoAppe;
    	dlg_stuInfoAppe.DoModal();
    }
    

    14、接下来怎么把一条新的学生信息通过“添加一条学生记录信息”对话框加到上一个 “学生档案信息”对话框的列表中去,这是我们的目的。

    15、在对应部分添加如下代码:
    CString m_sNo,m_sName,m_sSex,m_sDept,m_sClass;
    在这里插入图片描述

    class CDlgStuInfo : public CDialog
    {
    // Construction
    public:
    	CDlgStuInfo(CWnd* pParent = NULL);   // standard constructor
    
    // Dialog Data
    	//{{AFX_DATA(CDlgStuInfo)
    	enum { IDD = IDD_DlgStuInfo };
    	CListCtrl	m_listCtrl;
    	//}}AFX_DATA
    
    	CString m_sNo,m_sName,m_sSex,m_sDept,m_sClass;
    
    	int m_listSelPos; //获取当前被选中的位置
    
    // Overrides
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CDlgStuInfo)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	//}}AFX_VIRTUAL
    
    // Implementation
    protected:
    
    	// Generated message map functions
    	//{{AFX_MSG(CDlgStuInfo)
    	virtual BOOL OnInitDialog();
    	afx_msg void OnBTNAppe();
    	afx_msg void OnBTNModi();
    	afx_msg void OnClickList1(NMHDR* pNMHDR, LRESULT* pResult);
    	afx_msg void OnBTNDele();
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    

    16、点击“确定”按钮后接收添加的信息到上一个 (学生档案信息)对话框的列表中去,代码如下。

    void CDlgStuInfo::OnBTNAppe() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoAppe dlg_stuInfoAppe;
    	if(IDOK == dlg_stuInfoAppe.DoModal())
    	{
    		m_sNo = dlg_stuInfoAppe.m_sNo;
    		m_sName = dlg_stuInfoAppe.m_sName;
    		m_sSex = dlg_stuInfoAppe.m_sSex;
    		m_sDept = dlg_stuInfoAppe.m_sDept;
    		m_sClass = dlg_stuInfoAppe.m_sClass; //把添加记录对话框中的数据传过来,保存到基础信息对话框中
    		int pos; //添加的位置
    		pos = m_listCtrl.GetItemCount();
    		m_listCtrl.InsertItem(pos,m_sNo);
    		m_listCtrl.SetItemText(pos,1,m_sName);
    		m_listCtrl.SetItemText(pos,2,m_sSex);
    		m_listCtrl.SetItemText(pos,3,m_sDept);
    		m_listCtrl.SetItemText(pos,4,m_sClass); //把获取进来的数据插进去
    	}
    }
    

    17、双击“修改记录”按钮,把“修改记录信息”这个对话框给调出来(同12)。

    18、把“修改记录信息”对话框的头文件:#include "Dlg_StuInfoModi.h"嵌入进来。然后在OnBTNModi()中编程(同13)。

    void CDlgStuInfo::OnBTNModi() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoModi dlg_stuInfoModi;
        dlg_stuInfoModi.DoModal();
    }
    

    19、接下来怎么把 “修改记录信息”对话框中要修改的记录更新到上一个 “学生档案信息”对话框的列表中去,这是我们的目的(同14)。

    20、我们回到IDD_DlgStuInfo对话框,选中对话框,右击选择“事件…”,在弹出的事件句柄中选择“NM_CLICK”,如下图所示。
    在这里插入图片描述
    在这里插入图片描述

    void CDlgStuInfo::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	// TODO: Add your control notification handler code here
    	m_listSelPos = m_listCtrl.GetSelectionMark();
    //获取当前被选行的信息,传送到编辑对话框中去
    	*pResult = 0;
    }
    

    21、添加代码如下(类似16)。

    void CDlgStuInfo::OnBTNModi() 
    {
    	// TODO: Add your control notification handler code here
    	CDlg_StuInfoModi dlg_stuInfoModi;
    	dlg_stuInfoModi.m_sNo = m_listCtrl.GetItemText(m_listSelPos,0); //获取当前记录的显示的文本
    	dlg_stuInfoModi.m_sName = m_listCtrl.GetItemText(m_listSelPos,1);
    	dlg_stuInfoModi.m_sSex = m_listCtrl.GetItemText(m_listSelPos,2);
    	dlg_stuInfoModi.m_sDept = m_listCtrl.GetItemText(m_listSelPos,3);
    	dlg_stuInfoModi.m_sClass = m_listCtrl.GetItemText(m_listSelPos,4);
    
    	if(IDOK == dlg_stuInfoModi.DoModal())
    	{ //把新数据传送给浏览对话框,实现信息的修改
    		UpdateData(true); //把对话框中的信息更新到内存中去
    		m_listCtrl.SetItemText(m_listSelPos,0,dlg_stuInfoModi.m_sNo);
    		m_listCtrl.SetItemText(m_listSelPos,1,dlg_stuInfoModi.m_sName);
    		m_listCtrl.SetItemText(m_listSelPos,2,dlg_stuInfoModi.m_sSex);
    		m_listCtrl.SetItemText(m_listSelPos,3,dlg_stuInfoModi.m_sDept);
    		m_listCtrl.SetItemText(m_listSelPos,4,dlg_stuInfoModi.m_sClass);
    	}
    }
    

    22、“删除记录”类似,不再叙述。这里仅将该部分代码附上,如下。

    void CDlgStuInfo::OnBTNDele() 
    {
    	// TODO: Add your control notification handler code here
    	CString str;
    	str.Format("确认删除第 %d 行",m_listSelPos + 1);
    	if(IDYES == AfxMessageBox(str,MB_YESNO|MB_ICONQUESTION))
    	{
    		m_listCtrl.DeleteItem(m_listSelPos);
    	}
    } 
    

    三、执行结果

    1、编译运行后,点击“学生档案信息”,界面如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    2、添加记录,如下图所示。
    在这里插入图片描述
    3、修改记录,如下图所示。
    在这里插入图片描述
    4、删除记录,如下图所示。
    在这里插入图片描述

    展开全文
  • GUI 剖析之列表框控件(ListView)

    千次阅读 2012-11-25 13:54:40
     lvc.pszText = L"性别";  SendMessage(hListView,LVM_INSERTCOLUMN,3,(LPARAM)&lvc);  lvc.pszText = L"学历";  SendMessage(hListView,LVM_INSERTCOLUMN,4,(LPARAM)&lvc);  //插入行    for...

    //如果你想写餐饮管理系统,下面的代码将对你有所帮助

     


    #include "stdafx.h"
    #include "listview TEST.h"
    #include <commctrl.h>

    #pragma comment(lib,"comctl32.lib")//导入库comctl32.lib

     

    #define MAX_LOADSTRING 100
    #define IDC_LISTVIEW   1
    // 全局变量:
    HINSTANCE hInst;        // 当前实例
    TCHAR szTitle[MAX_LOADSTRING];     // 标题栏文本
    TCHAR szWindowClass[MAX_LOADSTRING];   // 主窗口类名

    // 此代码模块中包含的函数的前向声明:
    ATOM    MyRegisterClass(HINSTANCE hInstance);
    BOOL    InitInstance(HINSTANCE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
    void AddItemOfListView(int row,HWND hListView);

    int APIENTRY _tWinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    {
     UNREFERENCED_PARAMETER(hPrevInstance);
     UNREFERENCED_PARAMETER(lpCmdLine);

      // TODO: 在此放置代码。
     MSG msg;
     HACCEL hAccelTable;

     // 初始化全局字符串
     LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
     LoadString(hInstance, IDC_LISTVIEWTEST, szWindowClass, MAX_LOADSTRING);
     MyRegisterClass(hInstance);

     // 执行应用程序初始化:
     if (!InitInstance (hInstance, nCmdShow))
     {
      return FALSE;
     }

     hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_LISTVIEWTEST));

     // 主消息循环:
     while (GetMessage(&msg, NULL, 0, 0))
     {
      if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
      {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
      }
     }

     return (int) msg.wParam;
    }

     

    //
    //  函数: MyRegisterClass()
    //
    //  目的: 注册窗口类。
    //
    //  注释:
    //
    //    仅当希望
    //    此代码与添加到 Windows 95 中的“RegisterClassEx”
    //    函数之前的 Win32 系统兼容时,才需要此函数及其用法。调用此函数十分重要,
    //    这样应用程序就可以获得关联的
    //    “格式正确的”小图标。
    //
    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
     WNDCLASSEX wcex;

     wcex.cbSize = sizeof(WNDCLASSEX);

     wcex.style   = CS_HREDRAW | CS_VREDRAW;
     wcex.lpfnWndProc = WndProc;
     wcex.cbClsExtra  = 0;
     wcex.cbWndExtra  = 0;
     wcex.hInstance  = hInstance;
     wcex.hIcon   = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_LISTVIEWTEST));
     wcex.hCursor  = LoadCursor(NULL, IDC_ARROW);
     wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
     wcex.lpszMenuName = MAKEINTRESOURCE(IDC_LISTVIEWTEST);
     wcex.lpszClassName = szWindowClass;
     wcex.hIconSm  = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

     return RegisterClassEx(&wcex);
    }

    //
    //   函数: InitInstance(HINSTANCE, int)
    //
    //   目的: 保存实例句柄并创建主窗口
    //
    //   注释:
    //
    //        在此函数中,我们在全局变量中保存实例句柄并
    //        创建和显示主程序窗口。
    //
    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    {
       HWND hWnd;

       hInst = hInstance; // 将实例句柄存储在全局变量中

       hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
          CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

       if (!hWnd)
       {
          return FALSE;
       }

       ShowWindow(hWnd, nCmdShow);
       UpdateWindow(hWnd);

       return TRUE;
    }

    //
    //  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
    //
    //  目的: 处理主窗口的消息。
    //
    //  WM_COMMAND - 处理应用程序菜单
    //  WM_PAINT - 绘制主窗口
    //  WM_DESTROY - 发送退出消息并返回
    //
    //
    TCHAR buffer[20];
    TCHAR ListIndex[100][256]={{TEXT("1")},{TEXT("2")},{TEXT("3")},{TEXT("4")},{TEXT("5")},{TEXT("6")},{TEXT("7")}};
    TCHAR ListName[100][256]={{TEXT("张三")},{TEXT("李四")},{TEXT("王五")},{TEXT("天策")},{TEXT("郑金玮")},{TEXT("黄勇")}};
    TCHAR ListAge[100][256]={{TEXT("20")},{TEXT("21")},{TEXT("22")},{TEXT("21")},{TEXT("22")},{TEXT("22")}};
    TCHAR ListSex[100][256]={{TEXT("男")},{TEXT("女")},{TEXT("男")},{TEXT("男")},{TEXT("男")},{TEXT("男")}};
    TCHAR ListEdu[100][256]={{TEXT("大学本科")},{TEXT("大学专科")},{TEXT("高职")},{TEXT("本科")},{TEXT("本科")},{TEXT("本科")}};
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
     int wmId, wmEvent;
     PAINTSTRUCT ps;
     HDC hdc;
     static HWND hListView;
     static int cx,cy;
     static RECT rect;
     GetWindowRect(hWnd, &rect);
     cx = rect.right-rect.left;
     cy = rect.bottom-rect.top;
       static HMENU hmenu;

     switch (message)
     {
     case WM_CREATE:
      {
       InitCommonControls();

       
       hListView = CreateWindowEx(LVS_EX_FULLROWSELECT,_T("SysListView32"),NULL,LVS_REPORT |
        WS_CHILD |WS_VISIBLE,
        0,0,cx,cy,hWnd,(HMENU)IDC_LISTVIEW,hInst,NULL);


       SendMessage(hListView,LVM_SETTEXTCOLOR,0,RGB(255,0,0,100));//设置文本颜色

       SendMessage(hListView,LVM_SETTEXTBKCOLOR ,0,RGB(0,0,0,100));//设置文本颜色
       SetFocus(hListView);

       //ListView_SetItemState(hlistview,0,LVIS_SELECTED,LVIS_SELECTED);               
       //参数0使第一行处于选择中状态,若为-1则表示所有的行

       ListView_SetExtendedListViewStyle(hListView,LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|LVS_EX_GRIDLINES|LVS_EX_AUTOSIZECOLUMNS|LVS_EX_FULLROWSELECT);              //设置整行选择风格
        //插入列
       LV_COLUMN lvc;
       lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
       lvc.fmt=LVCFMT_CENTER;
       lvc.pszText =L"序号";
       lvc.cx = 100;
       SendMessage(hListView,LVM_INSERTCOLUMN,0,(LPARAM)&lvc);


       lvc.pszText = L"姓名";
       lvc.cx = 150;
       SendMessage(hListView,LVM_INSERTCOLUMN,1,(LPARAM)&lvc);

       lvc.pszText = L"年龄";  
       SendMessage(hListView,LVM_INSERTCOLUMN,2,(LPARAM)&lvc);

       lvc.pszText = L"性别";
       SendMessage(hListView,LVM_INSERTCOLUMN,3,(LPARAM)&lvc);

       lvc.pszText = L"学历";
       SendMessage(hListView,LVM_INSERTCOLUMN,4,(LPARAM)&lvc);

       //插入行
       
        for(int i=2;i>-1;i--)
        {
        
         LV_ITEM lvi;
         lvi.mask = LVIF_TEXT;
         lvi.iItem = 0;
         lvi.iSubItem = 0;
         wsprintf(buffer,ListIndex[i]);
         lvi.pszText =buffer;

         SendMessage(hListView,LVM_INSERTITEM,0,(LPARAM)&lvi);
         /
         lvi.iSubItem++;
         ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
         wsprintf(buffer,ListName[i]);
         lvi.pszText =buffer;

         SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
         ///
         lvi.iSubItem++;
         ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
         wsprintf(buffer,ListAge[i]);
         lvi.pszText =buffer;

         SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
         ///
         lvi.iSubItem++;
         ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
         wsprintf(buffer,ListSex[i]);
         lvi.pszText =buffer;

         SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
         //
         lvi.iSubItem++;
         ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
         wsprintf(buffer,ListEdu[i]);
         lvi.pszText =buffer;

         SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

        }
       

       break;
      }
     case WM_NOTIFY:
      {
       LPNMHDR pNmhdr = (LPNMHDR)lParam; 

        switch (pNmhdr->code) 
                { 
                case NM_CUSTOMDRAW: 
                    { 
                        //请确保是ListView的消息,这里未判断  
                        LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam; 
                        switch (lplvcd->nmcd.dwDrawStage) 
                        { 
                        case CDDS_PREPAINT: 
                            { 
                                return CDRF_NOTIFYSUBITEMDRAW; 
                            } 
                            break; 
                        case CDDS_ITEMPREPAINT: 
                            { 
                                return CDRF_NOTIFYSUBITEMDRAW; 
                            } 
                            break; 
                        case (CDDS_ITEMPREPAINT|CDDS_SUBITEM): 
                            { 
           
           
           int iselect=SendMessage(hListView,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
           if(iselect!=-1)
           {
                                lplvcd->nmcd.dwItemSpec;//行索引
                                lplvcd->iSubItem;//列索引
                                lplvcd->clrText = RGB(255, 255, 0);//改变文字颜色
                                lplvcd->clrTextBk=RGB(0,255,0);//背景颜色

           }
                                return CDRF_DODEFAULT; 
                            } 
                            break; 
                        } 
                    } 
        }
       switch(LOWORD(wParam))
       {
       case IDC_LISTVIEW:
        { 

         if(((LPNMHDR)lParam)->code==NM_RCLICK)
           {
            //MessageBeep (-1);
            int iselect=SendMessage(hListView,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
            if(iselect!=-1)
            {
          
             POINT point;
             hmenu=LoadMenu(hInst,MAKEINTRESOURCE(IDC_LISTVIEWTEST));
             hmenu=GetSubMenu(hmenu,0);
             GetCursorPos (&point);
             TrackPopupMenu (hmenu, TPM_LEFTALIGN, point.x, point.y, 0, hWnd, NULL);
            }
            }
         //if(((LPNMHDR)lParam)->code==NM_CLICK)
         //{
         // //MessageBeep (-1);
         // int iselect=SendMessage(hListView,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
         // TCHAR szBuffer[256]={0};
         // wsprintf(szBuffer,TEXT("你所选中的是第%d行"),iselect+1);

         // if(iselect!=-1)
         // {

         //  MessageBox(hWnd,szBuffer,TEXT(""),MB_OK|MB_ICONINFORMATION);
         // }
         //}

         if(((LPNMHDR)lParam)->code==NM_DBLCLK)
         {
          //MessageBeep (-1);
          int iselect=SendMessage(hListView,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
          TCHAR szBuffer[256]={0};
          wsprintf(szBuffer,TEXT("你所选中的是第%d行"),iselect+1);

          if(iselect!=-1)
          {

           MessageBox(hWnd,szBuffer,TEXT(""),MB_OK|MB_ICONINFORMATION);
          }
         }
         
        break;
        }

       }
       break;
      }
        
     case WM_SIZE:
      {
       MoveWindow(hListView,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
      
       break;
      }
     case WM_COMMAND:
      wmId    = LOWORD(wParam);
      wmEvent = HIWORD(wParam);
      // 分析菜单选择:
      switch (wmId)
      {
      case IDM_ABOUT:
       DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
       break;
      case IDM_EXIT:
       DestroyWindow(hWnd);
       break;
      case ID_DELETE:
       {
        int iselect=SendMessage(hListView,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
        if(iselect!=-1)
        {
         SendMessage(hListView,LVM_DELETEITEM,iselect,0);
        }
        break;
       }
      case ID_INSERLIE:
       {
        int itemc=SendMessage(hListView,LVM_GETITEMCOUNT,0,0);

     

        AddItemOfListView(itemc,hListView);
        break;
       }
      case ID_GETCOUNT:
       {
        int nCount=ListView_GetItemCount(hListView);
        TCHAR szBuff[256];
        ZeroMemory(szBuff,sizeof(szBuff)/sizeof(TCHAR));
        wsprintf(szBuff,TEXT("总项数:%d"),nCount);
        MessageBox(hWnd,szBuff,TEXT(""),MB_OK|MB_ICONINFORMATION);
        break;
       }
      case ID_GETINFO:
       {
        int iselect=SendMessage(hListView,LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
        TCHAR szBuffer[256]={0};
        wsprintf(szBuffer,TEXT("你所选中的是第%d行"),iselect+1);

        if(iselect!=-1)
        {


         MessageBox(hWnd,szBuffer,TEXT(""),MB_OK|MB_ICONINFORMATION);
        }
        break;
       }
      default:
       return DefWindowProc(hWnd, message, wParam, lParam);
      }
      break;
     case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      // TODO: 在此添加任意绘图代码...
      EndPaint(hWnd, &ps);
      break;
     case WM_DESTROY:
      PostQuitMessage(0);
      break;
     default:
      return DefWindowProc(hWnd, message, wParam, lParam);
     }
     return 0;
    }

    // “关于”框的消息处理程序。
    INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
     UNREFERENCED_PARAMETER(lParam);
     switch (message)
     {
     case WM_INITDIALOG:
      return (INT_PTR)TRUE;

     case WM_COMMAND:
      if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
      {
       EndDialog(hDlg, LOWORD(wParam));
       return (INT_PTR)TRUE;
      }
      break;
     }
     return (INT_PTR)FALSE;
    }
    void AddItemOfListView(int row,HWND hListView)
    {
     if (row>5)
     {
      MessageBox(hListView,TEXT("已经达到上限,禁止插入!"),TEXT(""),MB_ICONWARNING|MB_OK);
      return;
     }
     TCHAR buffer[20];
     


     LV_ITEM lvi;
     lvi.mask = LVIF_TEXT;
     lvi.iItem = row;
     lvi.iSubItem = 0;
     wsprintf(buffer,ListIndex[row]);
     lvi.pszText =buffer;

     SendMessage(hListView,LVM_INSERTITEM,0,(LPARAM)&lvi);
     /
     lvi.iSubItem++;
     ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
     wsprintf(buffer,ListName[row]);
     lvi.pszText =buffer;

     SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
     ///
     lvi.iSubItem++;
     ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
     wsprintf(buffer,ListAge[row]);
     lvi.pszText =buffer;

     SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
     ///
     lvi.iSubItem++;
     ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
     wsprintf(buffer,ListSex[row]);
     lvi.pszText =buffer;

     SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
     //
     lvi.iSubItem++;
     ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
     wsprintf(buffer,ListEdu[row]);
     lvi.pszText =buffer;

     SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

    }

    展开全文
  • 对WPF的ComboBox进行了扩展,现在可以在下拉列表中嵌入DataGrid/ListView/ListBox等数据控件,实现了展开后列表的自动选择,自动滚屏,并完全支持数据的绑定操作
  • 列表框 修改 void CMFCApplication2Dlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 //获取编辑区内容 UpdateData(TRUE); if (m_str.GetLength()==0) { ...

    列表框

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

    void CMFCApplication2Dlg::OnBnClickedButton2()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	//获取编辑区内容
    	UpdateData(TRUE);
    	if (m_str.GetLength()==0)
    	{
    		MessageBox(TEXT("内容不能为空"));
    		return;
    	}
    	//给列表添加内容
    	m_listBox.AddString(m_str);
    	m_str.Empty();
    	//把内容更新到编辑区
    	UpdateData(FALSE);
    
    }
    
    
    void CMFCApplication2Dlg::OnBnClickedButton3()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	//获取选中行
    	int i = m_listBox.GetCurSel();
    	//删除选中行
    	m_listBox.DeleteString(i);
    }
    
    
    void CMFCApplication2Dlg::OnLbnSelchangeList1()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	//获取选中行
    	int i = m_listBox.GetCurSel();
    	//获得指定内容
    	m_listBox.GetText(i, m_str);
    	//显示
    	UpdateData(FALSE);
    }
    
    
    void CMFCApplication2Dlg::OnBnClickedButton4()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	UpdateData(TRUE);
    	if (m_str.GetLength() == 0)
    	{
    		MessageBox(TEXT("内容不能为空..."));
    		return;
    	}
    	//获得选中行
    	int i = m_listBox.GetCurSel();
    	
    	//删除选中行 
    	m_listBox.DeleteString(i);
    	//选中位置插入新的内容
    	m_listBox.InsertString(i, m_str);
    	//将编辑框设置为空
    	m_str = TEXT("");
    	UpdateData(FALSE);
    }
    

    组合框(下拉框)用于登陆界面的制作

    在这里插入图片描述
    在这里插入图片描述
    可执行代码:

    m_combo1.SetCurSel(1);  
    	//显示选项
    	CString str;
    	m_combo1.GetLBText(0, str);
    	MessageBox(str);
    	//添加选项
    	m_combo1.AddString(TEXT("奶茶"));
    

    滑块

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    添加滚动条和编辑框,点击滚动条属性,在WM_HSCROLL中添加处理事件
    在这里插入图片描述
    为编辑框添加变量
    在这里插入图片描述
    为滚动条添加变量
    在这里插入图片描述
    可执行代码:

    //滑块处理事件
    void CMFCApplication2Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    	// TODO: 在此添加消息处理程序代码和/或调用默认值
    	if (pScrollBar == &m_sb)
    	{
    		int tempos;
    		switch (nSBCode) //判断滚动条的哪一部分
    		{
    		case SB_THUMBPOSITION:  //滑块位置
    		{
    			m_sb.SetScrollPos(nPos);
    			m_pos = nPos;
    			UpdateData(FALSE);
    		
    			break;
    		}
    		case SB_LINELEFT: //向左的箭头
    		{
    			//获取滑块的位置
    			tempos = m_sb.GetScrollPos();
    			tempos = tempos - 1;
    			if (tempos < 0)
    			{
    				tempos = 0;
    			}
    			m_sb.SetScrollPos(tempos);
    			m_pos = tempos;
    			//显示
    			UpdateData(FALSE);
    		}
    			break;
    		case SB_LINERIGHT:  //向右的箭头
    		{
    			//获取滑块的位置
    			tempos = m_sb.GetScrollPos();
    			tempos = tempos + 1;
    			if (tempos > 100)
    			{
    				tempos = 100;
    			}
    			m_sb.SetScrollPos(tempos);
    			m_pos = tempos;
    			//显示
    			UpdateData(FALSE);
    		}
    			break;
    		case SB_PAGELEFT:  //滑块和箭头之间左边
    		{
    			//获取滑块的位置
    			tempos = m_sb.GetScrollPos();
    			tempos = tempos - 10;
    			if (tempos <0)
    			{
    				tempos = 0;
    			}
    			m_sb.SetScrollPos(tempos);
    			m_pos = tempos;
    			//显示
    			UpdateData(FALSE);
    		}
    			break;
    		case SB_PAGERIGHT:  //滑块和箭头之间右边
    		{
    			//获取滑块的位置
    			tempos = m_sb.GetScrollPos();
    			tempos = tempos + 10;
    			if (tempos > 100)
    			{
    				tempos = 100;
    			}
    			m_sb.SetScrollPos(tempos);
    			m_pos = tempos;
    			//显示
    			UpdateData(FALSE);
    		}
    			break;
    		default:
    			break;
    		}
    	}
    	CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
    }
    

    旋转控件

    在这里插入图片描述
    添加控件
    在这里插入图片描述
    Ctrl+D,设置控件顺序旋转控件要比编辑框控件大1,且编辑框控件不能为0
    在这里插入图片描述
    设置旋转控件的属性
    在这里插入图片描述

    列表控件

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

    //列表框
    
    	//设置风格样式
    	//m_list.GetExtendedStyle()  获得当前样式
    	//LVS_EX_GRIDLINES  网格样式
    	//LVS_EX_FULLROWSELECT  全选中
    	m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
    	//插入标题
    	CString head[] = { TEXT("姓名"),TEXT("年龄"),TEXT("性别") };
    	//插入列
    	m_list.InsertColumn(0, head[0], LVCFMT_LEFT, 50);
    	m_list.InsertColumn(1, head[1], LVCFMT_LEFT, 50);
    	m_list.InsertColumn(2, head[2], LVCFMT_LEFT, 50);
    	for (int i = 0; i < 10; i++)
    	{
    		CString str;
    		str.Format(TEXT("mike%d"), i + 1);
    
    		//确定行
    		m_list.InsertItem(i, str);
    		//设置列
    		int j = 0;
    		j++;
    		m_list.SetItemText(i, j, TEXT("19"));
    		j++;
    		m_list.SetItemText(i, j, TEXT("男"));
    	}
    
    展开全文
  • 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用
  • 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定。本文介绍一种只在当前编辑单元格中显示...
  • 标签控件应用 【Tab Control 标签控件】 标签控件也比较常见。它可以把多个页面集成到一个窗口中, 每个页面对应一个标签,用户点击... 标签控件相当于是一个页面的容器,可以容纳多个对话 ,而且一般也只容纳对...
  • 2.表单中的其它控件:普通列表框,隐藏域,上传文件控件,多行文本框 1.表单基本控件 表单示例: <!DOCTYPE html> <html> <head> <title>表单</title> </head> <...
  • 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太 美观,而且还要用代码实现数据绑定。本文介绍一种只在当前编辑单元格中显示...
  • 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定。本文介绍一种只在当前编辑单元格中显示...
  • 在DataGridView控件中加入ComboBox下拉列表框的实现 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码...
  • 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定。本文介绍一种只在当前编辑单元格中显示...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,623
精华内容 2,649
关键字:

性别的列表框控件