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

ayidream 2005-02-17 11:01:48
http://community.csdn.net/Expert/topic/3786/3786808.xml?temp=.3274652

原问:用APPWIZARD生成基于对话框的程序,在对话框上放一个属性页,在属性页的第一页上放Cpage1.
Cpage1上有一个按钮IDC_BUTTON1, 对话框上有一个文本框IDC_EDIT1。
问:如何按下按钮IDC_BUTTON1,使文本框IDC_EDIT1的文字变成“abc”?

如果不知道IDC_EDIT1,只知道它对应的变量
CEdit m_ctl1;
那怎么办?

...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqinggao 2005-02-17
  • 打赏
  • 举报
回复
hyamw(林锋)兄的方法很稳妥,肯定不会出问题,只是这里是在属性页的按钮消息中执行的,对话框句柄肯定存在,所以不转换也能够保证正确CTestDlg *pDlg = (CTestDlg*)AfxGetApp()->m_pMainWnd;

shadowWind(GG好辛苦)兄估计对类型强制转换用得比较少,你可以测试一下,会出警告或者错误,说CEdit不能转换成CYourDialog,因为(CYourDialog*)GetParent->m_ctl1实际上是对m_ctll进行转换,而不是对GetParent()

呵呵,没有别的意思,只是希望各位都少走弯路,我也是一步一步走过来的,希望各位学VC没有我这么辛苦而已
shadowWind 2005-02-17
  • 打赏
  • 举报
回复
(CYourDialog*)GetParent->m_ctl1.SetWindowText("abc");



hyamw 2005-02-17
  • 打赏
  • 举报
回复
我的dialog类是CTestDlg,你可以改成你自己的:
CTestDlg *pDlg = (CTestDlg*)(CWnd::FromHandle(AfxGetApp()->m_pMainWnd->m_hWnd));
pDlg->m_ctl1.SetWindowText("aaafda");
ayidream 2005-02-17
  • 打赏
  • 举报
回复
TO 楼上:IDC_BUTTON1与文本框不是在同一层次上
shadowWind 2005-02-17
  • 打赏
  • 举报
回复
资源窗口中,双击IDC_BUTTON1添加一个事件函数 OnButton()
在这个函数中添加代码,做你要做的事。
设置edit的文本
m_ctl1.SetWindowText("abc");
ayidream 2005-02-17
  • 打赏
  • 举报
回复
fengqinggao同志的回答:

该贴的三楼已经解决问题了,不过还可以稍微简单些,因为你的是在按钮中调用,不存在句柄不存在的情况,所以只需要:
CTestDlg *pDlg = (CTestDlg*)AfxGetApp()->m_pMainWnd;
pDlg->m_ctl1.SetWindowText("aaafda");

即可,那里我就不回了,:)

15,979

社区成员

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

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