属性页中的按钮如何控制对话框中的EDIT控件?[我是菜鸟,在线等]

ayidream 2005-02-17 10:07:07
用APPWIZARD生成基于对话框的程序,在对话框上放一个属性页,在属性页的第一页上放Cpage1.
Cpage1上有一个按钮IDC_BUTTON1, 对话框上有一个文本框IDC_EDIT1。
问:如何按下按钮IDC_BUTTON1,使文本框IDC_EDIT1的文字变成“abc”?
...全文
88 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqinggao 2005-02-17
  • 打赏
  • 举报
回复
实际上用GetParent()更合理一些,对话框和和属性页在你这里应该是父子关系,所以在属性页(子)中用GetParent()应该能够得到对话框(父)的指针,应该是可行的,有些奇怪

用AfxGetApp()->m_pMainWnd得到的是主窗口的指针,也就是你的对话框的指针了,方法正确,但实际上是转了一个弯子,呵呵
ayidream 2005-02-17
  • 打赏
  • 举报
回复
Tofengqinggao(风清高) :
AfxGetApp()->m_pMainWnd->GetDlgItem(IDC_EDIT1)->SetWindowText("abc");
这个方法可以,非常感谢!!
fengqinggao 2005-02-17
  • 打赏
  • 举报
回复
你的CPage1的父窗口不是你的主窗口吗?GetParent就应该得到的是主窗口啊,奇怪。
那再尝试一下如下语句:
AfxGetApp()->m_pMainWnd->GetDlgItem(IDC_EDIT1)->SetWindowText("abc");

如果你的描述没有错误,这两种方法都应该不会出问题,等你再尝试后的结果再说
ayidream 2005-02-17
  • 打赏
  • 举报
回复

GetParent()->GetDlgItem(IDC_EDIT1)->SetWindowText("abc");
会崩溃
fengqinggao 2005-02-17
  • 打赏
  • 举报
回复
呵呵,我不是及时更正了么?第二种方法就可以了
ayidream 2005-02-17
  • 打赏
  • 举报
回复
文本框IDC_EDIT1 不是在Cpage1上,而是在主对话框上。也就是说属性页与文本框IDC_EDIT1属于并列关系。当
void CPage1::OnButton1()
{
// TODO: Add your control notification handler code here
m_pPage1->GetDlgItem(IDC_EDIT1)->SetWindowText("abc");
}
CPage1成员上没有m_pPage1
wave2050 2005-02-17
  • 打赏
  • 举报
回复
可以把EDIT定义为一个CString对象?再给它赋值,UPDATADATE();
fengqinggao 2005-02-17
  • 打赏
  • 举报
回复
呵呵,不好意思,将button和edit的位置看反了,该这么写:
GetParent()->GetDlgItem(IDC_EDIT1)->SetWindowText("abc");

如上所说,如果明白了各对象、类、窗口的关系,万变不离其中,都能解决了
hyamw 2005-02-17
  • 打赏
  • 举报
回复
来晚了,:(
up
fengqinggao 2005-02-17
  • 打赏
  • 举报
回复
设属性页的指针为m_pPage1;则在该按钮的响应函数中添加如下语句即可:
m_pPage1->GetDlgItem(IDC_EDIT1)->SetWindowText("abc");

自己慢慢理解其中的调用关系,慢慢就会理解面向对象和类的一些东西了

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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