您的位置:首页 > 其它

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

2017-11-23 09:29 176 查看
本系列学习笔记来源于《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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: