猿问

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

首先我是MFC中基本对话框写的,主窗口是IDD_SHANGWEIJI_DIALOG,在主窗口上有个“添加删除房间”按钮,响应函数为void CShangweijiDlg::OnTianjia_Dele_Room() //添加删除房间按钮的响应函数
{
// TODO: Add your control notification handler code here
CTianJia_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();
}

猛跑小猪
浏览 170回答 2
2回答

慕妹3242003

列表控件的添加,不是使用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_TianjiaDeletRoomCDialog::OnOK();}

杨__羊羊

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