mfc 不同类之间控件变量怎样调用?
我写了一个小程序,主程序窗口为一个类,比如名字是 BxDlg.cpp
第二个窗口是Ps.cpp 程序启动时,密码认证的。加了两个EDIT控件 IDC_USERNAME 和 IDC_PASSWORD
变量为 m_username 和 m_password
那问题来了,我在主程序 BOOL CBxDlg::OnInitDialog() 里要调用这两个用户和密码的变量,调不了,我头大死了!

```c++
// CBxDlg 消息处理程序
BOOL CBxDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
INT_PTR nRes; // 用于保存DoModal函数的返回值
Ps tipDlg; // 构造对话框类CTipDlg的实例
nRes = tipDlg.DoModal(); // 弹出对话框
if (nRes == 2) // 判断对话框退出后返回值是否为IDCANCEL,如果是则return,否则继续向下执行
{
MessageBox("窗口内容2退出", "窗口标题", MB_OK);
PostQuitMessage(0); //用于优雅地结束消息循环。
AfxGetApp()->ExitInstance(); //是 MFC 中最推荐的退出方法。避免直接调用 exit() 或 TerminateProcess()避免资源泄漏。
}
else
{
MessageBox("窗口内容1好的", "窗口标题", MB_OK);
// 更新控件对应变量的值
UpdateData(TRUE);
// 判断用户名和密码并进入主界面
CString username, password;
GetDlgItemText(IDC_USERNAME, username); //这个不行 调不到是空的
GetDlgItemText(IDC_PASSWORD, password); //这个不行 调不到是空的
this->GetDlgItemText(IDC_USERNAME, username); //这个不行 调不到是空的
this->GetDlgItemText(IDC_PASSWORD, password); //这个不行 调不到是空的
m_username.GetWindowText(username); //这个认不到另一个窗口类的变量
m_password.GetWindowText(password); //这个认不到另一个窗口类的变量
if (username == "admin" && password == "123456")
{
// 关闭登录界面
CDialogEx::OnOK();
}
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
```