15,979
社区成员
发帖
与我相关
我的任务
分享
//登录界面提交按钮
void CUserLoginDlg::OnBnClickedBtnSubmit()
{
CString password;
GetDlgItem(IDC_EDIT_PASSWORD)->GetWindowTextA(password);
char *buf=NULL;
buf=password.GetBuffer(13);
//向主窗口发送登录消息
::PostMessage(this->hParent,WM_USERLOGIN,0,(LPARAM)buf);
}
LRESULT CtestAPIDlg::userLoginNotice(WPARAM wParam,LPARAM lParam)
{
strcpy_s(Password,(char*)lParam);
//获取帐号
GetTextFromLoginDlg();
return 0;
}
BOOL CMainDlg::OnInitDialog()
{
CLoginDlg dlg;
if(dlg.DoModal() == IDOK)
{
MessageBox("登陆成功!");
}
}
#include "MainDlg.h"
extern CMainDlg *g_pMainDlg;
登陆按钮中:
void CLoginDlg::OnOK()
{
//获取密码...
BOOL bOk = g_pMainDlg->ThePasswordIsOk(密码);
if (!bOk)
{
MessageBox("密码已存在,请重新输入!");
return;
}
CDialog::OnOK();
}
// 这是一个示例结构,实际使用最好还是进行加密
typedef struct {
TCHAR szUserName[256];
TCHAR szPassword[256];
TCHAR szSignCode[256];
} LOGIN_INFO;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// ...
HWND hwndDlg = CreateDialogParam(hInstance, (LPCTSTR)IDD_DIALOG, NULL, DialogProc, (LPARAM)hInstance);
// ...
}
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
int ret = 0;
static LOGIN_INFO LoginInfo = { 0 };
switch (uMsg) {
case WM_INITDIALOG:
ret = DialogBoxIndirect((HINSTANCE)lParam, (LPCTSTR)IDD_LOGIN, hwndDlg, LoginProc, (LPARAM)&LoginInfo);
switch (ret) {
case IDOK:
// 用户点击了 OK 已返回,那么可以针对 LoginInfo 再次校验看是否正确
break;
case IDCANCEL:
SendMessage(hwndDlg, WM_CLOSE, 0, 0);
break;
default:
break;
}
break;
// case ...
case WM_CLOSE;
SendMessage(hwndDlg, WM_DESTROY, 0, 0);
break;
case WM_DESTROY;
PostQuitMessage(0);
break;
default:
break;
}
return 0;
}
INT_PTR CALLBACK LoginProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static LOGIN_INFO *pLoginInfo = NULL;
switch (uMsg) {
case WM_INITDIALOG:
pLoginInfo = (LOGIN_INFO *)lParam;
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
// 获取用户输入
// case ...
case IDOK:
// 校验用户信息,如验证通过向 pLoginInfo 填充用户的信息结构体然后返回以备主程序二次校验
if (...) {
// lstrcpy(pLoginInfo->szUserName, TEXT("user"));
EndDialog(hwndDlg, IDOK);
}
break;
case IDCANCEL:
EndDialog(hwndDlg, IDCANCEL);
break;
default:
break;
}
break;
case WM_CLOSE;
EndDialog(hwndDlg, 0);
break;
default:
break;
}
return 0;
}