中年人学C语言Windows程序设计,31 listview和DialogBox控件的交互综合应用

中年人学C语言Windows程序设计,31 listview和DialogBox控件的交互综合应用

效果展示

用listview展示列表数据,

创建4个按钮,为添加,删除,修改,查询
在这里插入图片描述
单击鼠标右键弹出菜单,菜单内有添加,删除,修改功能

调用DialogBox进行添加和修改的操作。
在这里插入图片描述

代码

//主窗口回调函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    /*回调函数
        参数:
        hwnd : 窗口句柄
        message : 消息ID
        wParam和lParam:消息参数*/

    static TCHAR  szBuffer[128];
    static int cxChar, cyChar, cxClient, cyClient, xPos, yPos;
    static HWND childHwnd;        //子窗口句柄   
    static HWND hBtn, hBtn2, hBtn3, hBtn4;
    static int i,szlist;
    
    static HWND hListview;
    static LV_COLUMN lvc;//LVCOLUMN结构体,定义listview的列属性
    static LVITEM vitem;//LVITEM结构体,定义listview的项的数据属性
    static int idComboBox;
    int n,wmId, wmEvent;
    //static int nSelectItem;
    int nSelectIndex;
    switch (message)
    {
        //定义父窗口回调函数 WndProc, 在处理 WM_CREATE 消息时创建子窗口:
    case WM_CREATE:        //在接收到 WM_CREATE 消息时创建一个子窗口
         //创建逻辑字体

        hFont = CreateFont(
            -18/*高度*/, -9/*宽度*/, 0, 0, 400 /*一般这个值设为400*/,
            FALSE/*不带斜体*/, FALSE/*不带下划线*/, FALSE/*不带删除线*/,
            DEFAULT_CHARSET,  //使用默认字符集
            OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,  //这行参数不用管
            DEFAULT_QUALITY,  //默认输出质量
            FF_DONTCARE,  //不指定字体族*/
            TEXT("微软雅黑")  //字体名
        );
       
         //创建listview子窗口
        hListview = CreateWindowEx(0, TEXT("SysListView32"), TEXT("LISTVIEW"),
            WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT | LVS_SHOWSELALWAYS,
            0, 0, 350, 550,
            hWnd, NULL, hInst, NULL);
        //给list控件添加列标题,设置网格线风格 

        ListView_SetExtendedListViewStyle(hListview, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
        //ListView_SetExtendedListViewStyle(hListview, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES);
        /*
            LVS_EX_FULLROWSELECT 选中高亮,可以进行整行选中
            LVS_EX_CHECKBOXES 勾选框
            LVS_EX_GRIDLINES 网格线
          
          
            */

        lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;//指定哪些成员包含有效信息的变量。该成员可以是零        
        lvc.fmt = LVCFMT_CENTER;  //列标题与列中子项文本的对齐方式。最左边一列的对齐方式始终是 LVCFMT_LEFT;
        lvc.pszText = TEXT("姓名");//列的名称,如果正在设置列信息,则此成员是包含列标题文本的以空字符结尾的字符串的地址
        lvc.cx = 80;//设置列的宽度   
        SendMessage(hListview, LVM_INSERTCOLUMN, 0, (long)&lvc); //LVM_INSERTCOLUMN表示添加列表示添加列,给第1列添加标体

        lvc.pszText = TEXT("年龄");
        lvc.cx = 70;
        SendMessage(hListview, LVM_INSERTCOLUMN, 1, (long)&lvc);

        lvc.pszText = TEXT("部门");
        lvc.cx = 80;
        SendMessage(hListview, LVM_INSERTCOLUMN, 2, (long)&lvc);
        lvc.pszText = TEXT("职务");
        lvc.cx = 80;
        SendMessage(hListview, LVM_INSERTCOLUMN, 3, (long)&lvc);
        SendMessage(hListview, LVM_SETTEXTCOLOR, 0, RGB(255, 255, 255));//设置文字颜色
        SendMessage(hListview, LVM_SETTEXTBKCOLOR, 0, RGB(100, 0, 200));//设置文字背景颜色
        SendMessage(hListview, LVM_SETBKCOLOR, 0, RGB(150, 255, 50));//设置控件背景颜色

        vitem.mask = LVIF_TEXT;
        szlist = sizeof(stu) / sizeof(stu[0]);//计算当前数组有几个成员
        //vitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
        for (i = 0; i < szlist; i++)
        {
            //先添加项再设置子项内容   
            //插入第一行数据,这一段代码是不可以少的。      
            vitem.iItem = i;//第几行的数据
            vitem.iSubItem = 0;//第1列
            vitem.pszText = stu[i].name;//赋值
            ListView_InsertItem(hListview, &vitem);//ListView_InsertItem表示添加项
            // 设置子项  
            vitem.iSubItem = 1;//第2列
            vitem.pszText = stu[i].age;
            ListView_SetItem(hListview, &vitem);
            vitem.iSubItem = 2;//第3列
            vitem.pszText = stu[i].dept;
            ListView_SetItem(hListview, &vitem);
            vitem.iSubItem = 3;//第4列
            vitem.pszText = stu[i].job;
            ListView_SetItem(hListview, &vitem);
        }

        //添加按钮控件
        hBtn = CreateWindow(
            TEXT("button"),  //按钮控件的类名
            TEXT("添加"),
            WS_CHILD | WS_VISIBLE | WS_BORDER | BS_DEFPUSHBUTTON, //*默认按钮样式*/,
            400 /*X坐标*/, 10 /*Y坐标*/, 100 /*宽度*/, 30/*高度*/,
            hWnd, (HMENU)1 /*控件唯一标识符*/, hInst, NULL);
        //SendMessage(hStatic, WM_SETFONT, (WPARAM)hFont, 0);//设置文本框字体
        SendMessage(hBtn, WM_SETFONT, (WPARAM)hFont, 0);//设置按钮字体

         //删除按钮控件
        hBtn2 = CreateWindow(
            TEXT("button"),  //按钮控件的类名
            TEXT("删除"),
            WS_CHILD | WS_VISIBLE | WS_BORDER | BS_DEFPUSHBUTTON, //*默认按钮样式*/,
            400 /*X坐标*/, 40 /*Y坐标*/, 100 /*宽度*/, 30/*高度*/,
            hWnd, (HMENU)2 /*控件唯一标识符*/, hInst, NULL);
        //SendMessage(hStatic, WM_SETFONT, (WPARAM)hFont, 0);//设置文本框字体
        SendMessage(hBtn2, WM_SETFONT, (WPARAM)hFont, 0);//设置按钮字体

          //删除按钮控件
        hBtn3 = CreateWindow(
            TEXT("button"),  //按钮控件的类名
            TEXT("修改"),
            WS_CHILD | WS_VISIBLE | WS_BORDER | BS_DEFPUSHBUTTON, //*默认按钮样式*/,
            400 /*X坐标*/, 70 /*Y坐标*/, 100 /*宽度*/, 30/*高度*/,
            hWnd, (HMENU)3 /*控件唯一标识符*/, hInst, NULL);
        //SendMessage(hStatic, WM_SETFONT, (WPARAM)hFont, 0);//设置文本框字体
        SendMessage(hBtn3, WM_SETFONT, (WPARAM)hFont, 0);//设置按钮字体

          //删除按钮控件
        hBtn4 = CreateWindow(
            TEXT("button"),  //按钮控件的类名
            TEXT("查询"),
            WS_CHILD | WS_VISIBLE | WS_BORDER | BS_DEFPUSHBUTTON, //*默认按钮样式*/,
            400 /*X坐标*/, 100 /*Y坐标*/, 100 /*宽度*/, 30/*高度*/,
            hWnd, (HMENU)4 /*控件唯一标识符*/, hInst, NULL);
        //SendMessage(hStatic, WM_SETFONT, (WPARAM)hFont, 0);//设置文本框字体
        SendMessage(hBtn4, WM_SETFONT, (WPARAM)hFont, 0);//设置按钮字体
        break;

    case WM_COMMAND:
        wmId = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        switch (wmId) {
        case 1:  //按下添加按钮
            //INT_PTR back = (INT_PTR)DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, MyDlgProc);
            i= AddItem(hWnd, hListview,vitem,i);        
            break;
        case 2:
            //int nSelectItem;
            i = DelItem(hWnd, hListview, vitem, i);
            break;
        case 3:
            EditItem(hWnd, hListview, vitem);
           
            break;
        case 4:          
            nSelectIndex = SendMessage(hListview, LVM_GETNEXTITEM, -1, LVNI_SELECTED);//选择数据行数的第二种方法
            //nSelectIndex = ListView_GetSelectionMark(hListview);
            if (nSelectIndex != -1) {//判断是否选中一行
                TCHAR wstrText[4][128] = { 0 };
                //通过一个for循环 能够获取第 nSelectIndex item的所有内容
                for (n = 0; n < 4; n++)
                {
                    ListView_GetItemText(hListview, nSelectIndex, n, wstrText[n], sizeof(wstrText[n]));
                }
                wsprintf(szUserInfo, TEXT("姓名:%s\r\n年龄:%s\r\n部门: %s\r\n职务: %s"), wstrText[0], wstrText[1], wstrText[2], wstrText[3]);
                MessageBox(hWnd, szUserInfo, TEXT("提示信息"), MB_ICONINFORMATION);
            }
            else {
                MessageBox(hWnd, TEXT("未选择数据,请选择数据!!"), TEXT("提示信息"), MB_ICONINFORMATION);
            }
            break;
        case IDM_ADD: //点击添加
            //MessageBox(hWnd, TEXT("添加数据"), TEXT("提示信息"), MB_ICONINFORMATION);
            i = AddItem(hWnd, hListview, vitem, i);
            break;
        case IDM_MOD://点击编辑
           // MessageBox(hWnd, TEXT("修改数据"), TEXT("提示信息"), MB_ICONINFORMATION);
            EditItem(hWnd, hListview, vitem);
            break;

        case IDM_DEL://点击删除选项
            //MessageBox(hWnd, TEXT("删除数据"), TEXT("提示信息"), MB_ICONINFORMATION);
            i = DelItem(hWnd, hListview, vitem, i);
            break;

        default:
            //不处理的消息一定要交给 DefWindowProc 处理。
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;


    //在listVIEW控件上点击鼠标消息响应。
    case WM_NOTIFY: // the message that is being sent always
    {
        LPNMHDR lpNmhdr = (LPNMHDR)lParam;
        //if (lpNmhdr->idFrom == LISTVIEW)
         
        if (lpNmhdr->code == NM_CLICK)// 点击鼠标左键显示所在的行列情况
        {
            //设置要获取的行列信息
            int iItem = ((LPNMITEMACTIVATE)lParam)->iItem;
            int iSubItem = ((LPNMITEMACTIVATE)lParam)->iSubItem;
            // 4.5 发送消息获取数据
            //ListView_GetItem(lpNmhdr->hwndFrom, &vitem);
            wsprintf(szUserInfo, TEXT("你在列表中点击左键选中了一项,行 %d列 %d"), iItem, iSubItem);
            MessageBox(hWnd, szUserInfo, TEXT("提示信息"), MB_OK | MB_ICONWARNING);
            //nSelectItem = ListView_GetSelectionMark(hListview); //获取鼠标选中项的索引
            //SendMessage(hListview, LVM_DELETEITEM, nSelectItem, 0); //LVM_DELETEITEM 消息删除nSelectItem item。
        }
        if (lpNmhdr->code == NM_RCLICK)// 点击鼠标右键弹出菜单
        {
            // 1. 获取点击的位置,获取的是相对于桌面的
            POINT Point = { 0 };
            GetCursorPos(&Point);
            // 2. 获取一个子菜单
            HMENU hMenu = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU1));
            HMENU hSubMenu = GetSubMenu(hMenu, 0);
            // 3. 弹出菜单
            TrackPopupMenu(hSubMenu, TPM_LEFTALIGN, Point.x, Point.y, 0, hWnd, NULL);
            
        }
        break;
    }

    case WM_SIZE:
    {
        HDC hdc = GetDC(hWnd);
        cxClient = LOWORD(lParam);//当前x像素
        cyClient = HIWORD(lParam);//当前y像素
        ReleaseDC(hWnd, hdc);
        break;
    }

    case WM_DESTROY:
        DeleteObject(hFont);
        //DeleteObject(childHwnd);
        //DestroyWindow(hWnd);
        PostQuitMessage(0);
        break;

    case WM_LBUTTONDOWN:      
        break;
   

    case WM_MOUSEMOVE://鼠标移动
        xPos = GET_X_LPARAM(lParam);//鼠标位置X坐标
        yPos = GET_Y_LPARAM(lParam);//鼠标位置Y坐标
        //不要用LOWORD和HIWORD获取坐标,因为坐标有可能是负的
        break;

    case WM_CLOSE://询问窗口是否关闭
        if (MessageBox(hWnd, TEXT("要关闭程序吗?"), TEXT("请确认"), MB_YESNO | MB_ICONQUESTION) == IDYES)
        {
            DestroyWindow(hWnd);     //关闭程序   
        }
        else
            return 0;//表示处理了此消息,系统不再处理
        break;

    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}


// “关于”框的消息处理程序。
INT_PTR CALLBACK MyDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND hLabUsername;
    HWND hLabAge;
    HWND hLabelDept;
    HWND hLabelPost;
    static HWND hEditUsername;
    static HWND hEditAge;
    static HWND hEditDept;
    static HWND hEditPost;

    int wmId, wmEvent, iUsername, iAge;
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        //创建按钮控件
         //创建静态文本框控件--用户名
        hLabUsername = CreateWindow(TEXT("static"), TEXT("姓名:"),
            WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE /*垂直居中*/ | SS_RIGHT /*水平居右*/,
            0 /*x坐标*/, 20 /*y坐标*/, 70 /*宽度*/, 26 /*高度*/,
            hDlg /*父窗口句柄*/,
            (HMENU)11 /*控件ID*/,
            hInst /*当前程序实例句柄*/, NULL);
        //创建静态文本框控件--密码
         hLabAge = CreateWindow(TEXT("static"), TEXT("年龄:"),
            WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE /*垂直居中*/ | SS_RIGHT/*水平居右*/,
            0, 56, 70, 26,
            hDlg, (HMENU)12, hInst, NULL);
        //创建单行文本框控件
        hEditUsername = CreateWindow(TEXT("edit"), TEXT(""),
            WS_CHILD | WS_VISIBLE | WS_BORDER /*边框*/ | ES_AUTOHSCROLL/*水平滚动*/,
            80, 20, 200, 25,
            hDlg, (HMENU)13, hInst, NULL);
        SendMessage(hEditUsername, WM_SETTEXT, 0, (LPARAM)wstrText[0]);
        //创建密码输入框
        hEditAge = CreateWindow(TEXT("edit"), TEXT(""),
            //WS_CHILD | WS_VISIBLE | WS_BORDER | ES_Age /*密码*/ | ES_AUTOHSCROLL /*水平滚动*/,
            WS_CHILD | WS_VISIBLE | WS_BORDER |  ES_AUTOHSCROLL /*水平滚动*/,
            80, 56, 200, 25,
            hDlg, (HMENU)14, hInst, NULL
        );
        SetWindowText(hEditAge, wstrText[1]);
        //创建静态文本框控件--部门
         hLabelDept = CreateWindow(TEXT("static"), TEXT("部门:"),
            WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE /*垂直居中*/ | SS_RIGHT /*水平居右*/,
            0, 92, 70, 26,
            hDlg, (HMENU)15, hInst, NULL);
        
        //创建单行文本框控件
        hEditDept = CreateWindow(TEXT("edit"), TEXT(""),
            WS_CHILD | WS_VISIBLE | WS_BORDER /*边框*/ | ES_AUTOHSCROLL/*水平滚动*/,
            80, 92, 200, 25,
            hDlg, (HMENU)16, hInst, NULL);
        SetWindowText(hEditDept, wstrText[2]);
         hLabelPost = CreateWindow(TEXT("static"), TEXT("职务:"),
            WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE /*垂直居中*/ | SS_RIGHT /*水平居右*/,
            0, 128, 70, 26,
            hDlg, (HMENU)17, hInst, NULL);
        //创建单行文本框控件
        hEditPost = CreateWindow(TEXT("edit"), TEXT(""),
            WS_CHILD | WS_VISIBLE | WS_BORDER /*边框*/ | ES_AUTOHSCROLL/*水平滚动*/,
            80, 128, 200, 25,
            hDlg, (HMENU)18, hInst, NULL);
        SetWindowText(hEditPost, wstrText[3]);
        //创建按钮控件
        //HWND hBtnLogin = CreateWindow(TEXT("button"), TEXT("登录"),
        //    WS_CHILD | WS_VISIBLE | WS_BORDER | BS_FLAT/*扁平样式*/,
        //    80, 92, 200, 30,
        //    hDlg, (HMENU)15, hInst, NULL
        //);
        //依次设置控件的字体
        SendMessage(hLabUsername, WM_SETFONT, (WPARAM)hFont, 0);
        SendMessage(hLabAge, WM_SETFONT, (WPARAM)hFont, 0);
        SendMessage(hEditUsername, WM_SETFONT, (WPARAM)hFont, 0);
        SendMessage(hEditAge, WM_SETFONT, (WPARAM)hFont, 0);
       
        SendMessage(hLabelPost, WM_SETFONT, (WPARAM)hFont, 0);
        SendMessage(hLabelDept, WM_SETFONT, (WPARAM)hFont, 0);
        SendMessage(hEditPost, WM_SETFONT, (WPARAM)hFont, 0);
        SendMessage(hEditDept, WM_SETFONT, (WPARAM)hFont, 0);
        //SendMessage(hBtnLogin, WM_SETFONT, (WPARAM)hFont, 0);
        break;
        //return (INT_PTR)TRUE;

    case WM_COMMAND:
        wmId = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        switch (wmId)
        {
            case IDOK:
            {
                GetWindowText(hEditUsername, szUsername, 20);
                GetWindowText(hEditAge, szAge, 20);
                StringCchLength(szUsername, 20, &iUsername);
                StringCchLength(szAge, 20, &iAge);
                GetWindowText(hEditDept, szEditDept, 20);
                GetWindowText(hEditPost, szEditPost, 20);
                // StringCchLength(szUsername, 100, &iUsername);
                 //StringCchLength(EditPost, 100, &iAge);
                if (iUsername <= 0 || iAge <= 0)
                {
                    MessageBox(hDlg, TEXT("输入错误,请信息"), TEXT("信息提示"), MB_ICONINFORMATION);
                    break;
                }
                else
                {
                    wsprintf(szUserInfo, TEXT("姓名:%s\r\n年龄:%s\r\n部门: %s\r\n职务: %s"), szUsername, szAge, szEditDept, szEditPost);
                    MessageBox(hDlg, szUserInfo, TEXT("信息提示"), MB_ICONINFORMATION);
                    EndDialog(hDlg, wParam);
                    return (INT_PTR)TRUE;
                }
                //break;
            }
            case IDCANCEL:
            {
                //            yprintf(TEXT("dialog cancel clicked"));
                            //SetWindowText(hwndDlg, TEXT("dialog cancel clicked"));
                EndDialog(hDlg, wParam);
                return (INT_PTR)FALSE;
            }      
        }
        break;
        /*  if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
          {
              EndDialog(hDlg, LOWORD(wParam));
              return (INT_PTR)TRUE;
          }*/
        
    case WM_DESTROY:
        EndDialog(hDlg, wParam);
        break;
    }
    return (INT_PTR)FALSE;  //返回非零值
}

int AddItem(HWND hWnd, HWND hListview,LVITEM vitem,int i)
{
    if (DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, MyDlgProc) == 1)
        //dialog窗口内,点击ok 返回值是1,点击cancel返回值为2,这里判断如果点击OK,才对listview添加新的数据
    {
        vitem.mask = LVIF_TEXT;
        vitem.iItem = i;//第几行的数据
        vitem.iSubItem = 0;//第1列
        vitem.pszText = szUsername;//赋值
        ListView_InsertItem(hListview, &vitem);//ListView_InsertItem表示添加项
        // 设置子项  
        vitem.iSubItem = 1;//第2列
        vitem.pszText = szAge;
        ListView_SetItem(hListview, &vitem);
        vitem.iSubItem = 2;//第3列
        vitem.pszText = szEditDept;
        ListView_SetItem(hListview, &vitem);
        vitem.iSubItem = 3;//第4列
        vitem.pszText = szEditPost;
        ListView_SetItem(hListview, &vitem);      
        wsprintf(szUserInfo, TEXT("姓名:%s\r\n年龄:%s\r\n部门: %s\r\n职务: %s"), szUsername, szAge, szEditDept, szEditPost);
        //MessageBox(hWnd, szUserInfo, TEXT("信息提示"), MB_ICONINFORMATION);
        i++;
        //MessageBox(hWnd, TEXT("添加成功"), TEXT("信息提示"), MB_ICONINFORMATION);      
    }
    return i;
}

int DelItem(HWND hWnd, HWND hListview, LVITEM vitem, int i)
{   
    //int  nSelectItem = ListView_GetSelectionMark(hListview); 
    //选择数据行数的第1种方法,如果没有新的操作会一直保留当前的所选择的数据项
    int  nSelectItem = SendMessage(hListview, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
    //选择数据行数的第二种方法,获取一次就清空,需要再次操作鼠标才能再次获取,建议使用这个方法
    if (nSelectItem != -1)
    {
        if (MessageBox(hWnd, TEXT("确定要删除该条数据吗?"), TEXT("请确认"), MB_YESNO | MB_ICONQUESTION) == IDYES)
        {
            SendMessage(hListview, LVM_DELETEITEM, nSelectItem, 0); //LVM_DELETEITEM 消息删除nSelectItem item。
            i--;
        }
    }
    else 
    {
        MessageBox(hWnd, TEXT("未选择数据无法删除!请选择数据!"), TEXT("提示信息"), MB_ICONINFORMATION);
    }
    
    return i;
}

void EditItem(HWND hWnd, HWND hListview, LVITEM vitem)
{
    int n;
    int nSelectIndex = SendMessage(hListview, LVM_GETNEXTITEM, -1, LVNI_SELECTED);//选择数据的方法
    if (nSelectIndex != -1)//判断是否选中一行
    {
        
        //通过一个for循环 能够获取第 nSelectIndex item的所有内容
        for (n = 0; n < 4; n++)
        {
            ListView_GetItemText(hListview, nSelectIndex, n, wstrText[n], sizeof(wstrText[n]));
        }
        if (DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, MyDlgProc) == 1)
        {
            vitem.mask = LVIF_TEXT;
            vitem.iItem = nSelectIndex;//第几行的数据
            vitem.iSubItem = 0;//第1列
            vitem.pszText = szUsername;//赋值
            SendMessage(hListview, LVM_SETITEM, 0, (LPARAM)&vitem);
            //ListView_InsertItem(hListview, &vitem);//ListView_InsertItem表示添加项
            // 设置子项  
            vitem.iSubItem = 1;//第2列
            vitem.pszText = szAge;
            SendMessage(hListview, LVM_SETITEM, 1, (LPARAM)&vitem);
            //ListView_SetItem(hListview, &vitem);
            vitem.iSubItem = 2;//第3列
            vitem.pszText = szEditDept;
            SendMessage(hListview, LVM_SETITEM, 2, (LPARAM)&vitem);
            //ListView_SetItem(hListview, &vitem);
            vitem.iSubItem = 3;//第4列
            vitem.pszText = szEditPost;
            //ListView_InsertColumn(hListView, 1, &lvColumn);
            SendMessage(hListview, LVM_SETITEM, 3, (LPARAM)&vitem);
            //ListView_SetItem(hListview, &vitem);
            wsprintf(szUserInfo, TEXT("姓名:%s\r\n年龄:%s\r\n部门: %s\r\n职务: %s"), szUsername, szAge, szEditDept, szEditPost);
            //MessageBox(hWnd, szUserInfo, TEXT("信息提示"), MB_ICONINFORMATION);            
        }
    }
    else
    {
        MessageBox(hWnd, TEXT("未选择数据无法删除!请选择数据!"), TEXT("提示信息"), MB_ICONINFORMATION);
    }
    memset(wstrText, 0, sizeof(wstrText));//wstrText清空
    return;
}

版权声明:本文为qq_40922589原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。