一个登陆框上面有用户名和密码框。我在另外一个类(不是窗口类)的函数中中要把用户名和密码置为空。

来源:百度知道 编辑:UC知道 时间:2024/05/22 08:38:35
这时GetDlgItem(HWND,ID)中的HWND我该怎么得到啊?
我试了
可是dlg.GetDlgItem(IDC_TEXT_PASSWORD)->SetWindowText("");和它下面那句会报错。wincor.cpp 的76行的ASSERT错误了
真是麻烦你了啊。我就是想弄明白这个是怎么得到那句柄的

是登陆框的对话框句柄,

比如登陆框的类是 CDlgLogin;

那么在弹出窗口的地方保存全局的或者可访问的句柄。

比如在InitInstance中调用了这个类

CDlgLogin dlg;

g_wnd = dlg.GetSafeHwnd();

dlg.Domodal();

//。。。

然后调用 GetDlgItem( g_wnd, ID );

==================================

补充:

直接把
SetDlgItemText(g_wnd,IDC_TEXT_PASSWORD,"");
SetDlgItemText(g_wnd,IDC_TEXT_USER,"");

修改为:

dlg.GetDlgItem(IDC_TEXT_PASSWORD)->SetWindowText("");
dlg.GetDlgItem(IDC_TEXT_USER)->SetWindowText("");

不要用API函数,直接用CWnd::GetDlgItem(UINT ID);

如果用MFC的话直接绑定窗口里的控件与内部public变量,在OnInitDialog()中UpdateData(FALSE),在OnOK()中UpdateData(TRUE)然后在声明窗口对象的之后,DoModal之前改变对象的内部public变量值,DoModal == IDOK 之后直接获取对象的内部public变量值就可以了,这样比较方便,那个窗口功能单纯,仅获取信息,可以在不同的地方使用(比如登录框就可以在不同的地方使用)