为了账号安全,请及时绑定邮箱和手机立即绑定

我的目的上在点击确定后将添加的房间显示到主窗口的列表上,但是点击后,主窗口列表无反应

我的目的上在点击确定后将添加的房间显示到主窗口的列表上,但是点击后,主窗口列表无反应

C++
猛跑小猪 2023-04-22 22:18:10
首先我是MFC中基本对话框写的,主窗口是IDD_SHANGWEIJI_DIALOG,在主窗口上有个“添加删除房间”按钮,响应函数为void CShangweijiDlg::OnTianjia_Dele_Room() //添加删除房间按钮的响应函数{// TODO: Add your control notification handler code hereCTianJia_Delet TianjiaDelet_room;  TianjiaDelet_room.DoModal();}点击它弹出另一个IDD_TianJia_Dele窗口,窗口上有个添加房间的编辑框IDC_EDIT_Room和确定按钮,确定按钮响应函数void CTianJia_Delet::OnOK_TianjiaRoom()  {GetDlgItemText(IDC_EDIT_Room,m_TianjiaDeletRoom);//获得添加菜单中的内容CString strTemp;HWND zhu_hwnd=::GetParent(m_hWnd);//获得主窗口,但去掉::就错误,不知道为什么//获得主窗口列表中已添加的房间GetDlgItemText(IDC_LISTROOM,strTemp);//IDC_LISTROOM是主窗口主窗口是IDD_SHANGWEIJI_DIALOG上得一个列表 控件,我的目的上在点击确定后将添加的房间显示到主窗口的列表上,但是点击后,主窗口列表无反应strTemp+="\r\n";strTemp+=m_TianjiaDeletRoom;//在主窗口列表中显示所有添加的房间SetDlgItemText(IDC_LISTROOM,strTemp); CDialog::OnOK();}
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

列表控件的添加,不是使用SetDlgItemText()方式的。
另外,你这是对话框值传递的问题。可以使用更简单的方法,而不是使用GetParent()获取父窗口的句柄!
方法是:
在void CShangweijiDlg::OnTianjia_Dele_Room() 响应函数中
void CShangweijiDlg::OnTianjia_Dele_Room() 
{
CTianJia_Delet TianjiaDelet_room;  
if(IDOK==TianjiaDelet_room.DoModal()) //TianjiaDelet_room窗口按下IDOK键。即确定按纽
{
((CListBox *)GetDlgItem(IDC_LISTROOM))->AddString(TianjiaDelet_room.m_TianjiaDeletRoom);//将子对话框成员变量m_TianjiaDeletRoom的值添加到IDC_LISTROOM控件的结尾。
}
}
在子对话框的void CTianJia_Delet::OnOK_TianjiaRoom() 函数中
{
UpdateData();//将值更新到关联变量中m_TianjiaDeletRoom,这里假设你的编辑框IDC_EDIT_Room关联了变量m_TianjiaDeletRoom
CDialog::OnOK();
}

查看完整回答
反对 回复 2023-04-26
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

你首先要明确一点:
这个程序代码,你是在cmycubeview的成员函数中,这个是对话框?idc_edit1是属于cmycubeview还是cmynewdlg?
如果属于cmynewdlg,那么在domodal之后,是不能这样调用的,getdlgitem(idc_edit1)->getwindowtext(ch1);只能放在对话框的onok里面,并且通过类成员变量保存,并在domodal之后,通过dlg.strxxx形式来获取。

查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信