多个对话框问题

南气子水 2012-02-02 02:24:18
由于任务需要设计带界面的WIN程序,而我目前只会C语言,C++还在学习中,现在没办法,硬着头皮来搞,下面是我学习遇到问题:
我的目的是登录对话框用户输入用户名密码后,关闭,主对话框得到输入的用户名,密码。对于多个对话框传数据:
我定义了一个结构体,在头文件中:
struct LoginData
{
TCHAR UserName[20];
TCHAR PassWord[20];
};

在主对话框MainDlg.cpp中的
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
函数中弹出新的对话框
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
DialogBox(hInstance, MAKEINTRESOURCE(IDD_LOGINDIALOG), hwnd, LoginDlg_Proc);

LoginData *Re;
Re = (LoginData *)GetWindowLong(hwnd1,GWL_USERDATA);//z这里好像并没有得到登录子窗口
//的数据
SetDlgItemText(hwnd,IDC_EDITUSERNAME,Re->UserName);
SetDlgItemText(hwnd,IDC_EDITUSERPASSWORD,Re->UserPassword);

}
break;
default:
break;
}
}

下面是我LoginDlg.cpp中的代码:
void LoginDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDOK:
{
LoginData *ld=(LoginData *)malloc(sizeof(LoginData));
GetDlgItemText(hwnd,IDC_EDITUSERNAME,(*ld).UserName,sizeof((*ld).UserName));
GetDlgItemText(hwnd,IDC_EDITUSERPASSWORD,(*ld).PassWord,sizeof((*ld).PassWord));
SetWindowLong(hwnd,GWL_USERDATA,(LPARAM)ld);//我想保存ld中的值,然后主对话框用
}
break;
default:
break;
}
}
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2012-02-04
  • 打赏
  • 举报
回复
Re = (LoginData *)GetWindowLong(hwnd1,GWL_USERDATA);//z这里好像并没有得到登录子窗口
-------------------
第一个参数很hwnd1从哪里得到的?有效吗?GetWindowLong调用成功?
就算hwnd1有效,DialogBox函数返回以后你的对话框就销毁了吧,窗口句柄应该就无效了,你下面的GetWindowLong应该也失败了吧
南气子水 2012-02-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 believe_me 的回复:]
全局变量就可以了。
[/Quote]
除了全局变量还有别的更好的方法么?
believe_me 2012-02-02
  • 打赏
  • 举报
回复
全局变量就可以了。
南气子水 2012-02-02
  • 打赏
  • 举报
回复
写了这么多,不知道我的问题有没有说清楚......

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧