MFC 對話框登入/註冊後,需在主視窗的「個人中心」頁面顯示當前用戶帳號與註冊資料,且不再要求輸入密碼。核心在於 全域/應用程式層級保存用戶身分。
CWinApp 派生類 (theApp) 的成員變數,或全域結構體。theApp 取得用戶 ID。OnInitDialog 中執行 ADO 查詢:SELECT * FROM users WHERE user_id = ?。// MyApp.h
class CMyApp : public CWinApp {
public:
CString m_strCurrentUserID; // 登入成功後賦值
// ... 其他用戶資料快取 ...
};
// LoginDlg.cpp - 登入成功後
CMyApp* pApp = (CMyApp*)AfxGetApp();
pApp->m_strCurrentUserID = strUserID; // 保存 ID
// PersonalCenterDlg.cpp - OnInitDialog
CMyApp* pApp = (CMyApp*)AfxGetApp();
CString sql;
sql.Format(_T("SELECT username, email, phone FROM users WHERE user_id = '%s'"), pApp->m_strCurrentUserID);
_RecordsetPtr rs = pApp->m_pConnection->Execute(_bstr_t(sql), NULL, adCmdText);
if (!rs->adoEOF) {
SetDlgItemText(IDC_EDIT_USERNAME, (LPCTSTR)(_bstr_t)rs->GetCollect("username"));
SetDlgItemText(IDC_EDIT_EMAIL, (LPCTSTR)(_bstr_t)rs->GetCollect("email"));
SetDlgItemText(IDC_EDIT_PHONE, (LPCTSTR)(_bstr_t)rs->GetCollect("phone"));
}
rs->Close();
掌握「集中保存身分、按需查詢顯示」模式,MFC 資料庫應用即能輕鬆實現個人化頁面。