MFC学习笔记5 VC多对话框管理

来源:互联网 发布:怎么申请淘宝中国质造 编辑:程序博客网 时间:2024/06/05 07:20

本系列学习笔记来源于《VC++就业培训宝典之MFC视频教程》,记录自己系统化学习VC++ MFC过程

多对话框管理

新建两个对话框

这里写图片描述

  • 设置焦点顺序,使用ctrl+d,然后点选顺序。
  • IDOK是个特殊的ID,回车键会默认点击它。
  • ESC默认是IDCANCEL
  • strcmp是C语言的字符串比较函数。

代码:

// test3.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "resource.h"#include "stdio.h"BOOL CALLBACK MainProc(                       HWND hwndDlg,                       UINT uMsg,                       WPARAM wParam,                       LPARAM lParam){    char s[256];    sprintf(s,"uMsg=0x%x,wParam=%d,lParam=%d \n", uMsg,wParam,lParam);    OutputDebugString(s);    switch(uMsg){    case WM_COMMAND:        {            switch (LOWORD(wParam)){            case IDCANCEL:                EndDialog(hwndDlg,IDCANCEL);                return FALSE;            case IDOK:                EndDialog(hwndDlg,IDCANCEL);                return FALSE;            }            return FALSE;        }    }    return FALSE;}BOOL CALLBACK LoginProc(                        HWND hwndDlg,                        UINT uMsg,                        WPARAM wParam,                        LPARAM lParam){    switch(uMsg){    case WM_COMMAND:        {            switch (LOWORD(wParam)){            case IDCANCEL:                EndDialog(hwndDlg,IDCANCEL);                return FALSE;            case IDOK:                {                    char sName[20];                    char sPass[20];                    GetDlgItemText(hwndDlg,IDC_NAME,sName,sizeof(sName));                    GetDlgItemText(hwndDlg,IDC_PASS,sPass,sizeof(sPass));                    if(0==strcmp("admin",sName) && 0==strcmp("pass",sPass)){                        EndDialog(hwndDlg,IDOK);                    }                    else                        MessageBox(hwndDlg,"pass error","prompt",MB_OK);                    return FALSE;                }            }            return FALSE;        }    }    return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow){    int nRet = DialogBox(hInstance,(LPCSTR)IDD_DIALOG_LOGIN,NULL,LoginProc);    if(nRet==IDCANCEL)        return -1;    DialogBox(hInstance,(LPCSTR)IDD_DIALOG_MAIN, NULL,MainProc);    return 0;}

运行效果:

这里写图片描述

输入 admin password,回车进入主界面。

添加删除item的实现代码:

void CTest4Dlg::OnAdd() {    CString str;    GetDlgItemText(IDC_NUMB,str);    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);    int nCount = pList->GetItemCount();    pList->InsertItem(nCount,str);    GetDlgItemText(IDC_NAME,str);    pList->SetItemText(nCount,1,str);    GetDlgItemText(IDC_SALARY,str);    pList->SetItemText(nCount,2,str);}void CTest4Dlg::OnDel() {    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);    int nSel = pList->GetSelectionMark();    if(nSel<0){        AfxMessageBox("please select one row.");    }    pList->DeleteItem(nSel);}
原创粉丝点击