社区
界面
帖子详情
如何在一个对话框中访问另一个对话框的控件
wuxian1001
2011-01-09 11:59:14
我建了一个基于FormView的SDI窗口,然后在上面添加了按钮Button1
点击Button1后弹出对话框Dialog2,在Dialog2上有一个按钮Button2
现在的要求是点击Button2能改变Button1的显示值,请问该如何操作
...全文
316
18
打赏
收藏
如何在一个对话框中访问另一个对话框的控件
我建了一个基于FormView的SDI窗口,然后在上面添加了按钮Button1 点击Button1后弹出对话框Dialog2,在Dialog2上有一个按钮Button2 现在的要求是点击Button2能改变Button1的显示值,请问该如何操作
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wltg2001
2011-01-09
打赏
举报
回复
用GetParent可以在Button2 中获取父窗口的指针,通过这个指针来操作上面的控件。
Gostorm
2011-01-09
打赏
举报
回复
[Quote=引用 17 楼 wuxian1001 的回复:]
已发,麻烦你了
[/Quote]
测试后的代码已发到你邮箱!
wuxian1001
2011-01-09
打赏
举报
回复
[Quote=引用 16 楼 qfc8513 的回复:]
引用 15 楼 wuxian1001 的回复:
引用 14 楼 qfc8513 的回复:
你单步调试下,看具体问题出在哪部分代码了!
在GetDlgItem(IDC_BUTTON1)中发生错误,没有得到值
方便的话把代码发我邮箱吧:qifuchao@gmail.com我帮你看下!
[/Quote]
已发,麻烦你了
Gostorm
2011-01-09
打赏
举报
回复
[Quote=引用 15 楼 wuxian1001 的回复:]
引用 14 楼 qfc8513 的回复:
你单步调试下,看具体问题出在哪部分代码了!
在GetDlgItem(IDC_BUTTON1)中发生错误,没有得到值
[/Quote]
方便的话把代码发我邮箱吧:qifuchao@gmail.com我帮你看下!
wuxian1001
2011-01-09
打赏
举报
回复
[Quote=引用 14 楼 qfc8513 的回复:]
你单步调试下,看具体问题出在哪部分代码了!
[/Quote]
在GetDlgItem(IDC_BUTTON1)中发生错误,没有得到值
Gostorm
2011-01-09
打赏
举报
回复
你单步调试下,看具体问题出在哪部分代码了!
wuxian1001
2011-01-09
打赏
举报
回复
[Quote=引用 12 楼 qfc8513 的回复:]
可以先使用AfxGetMainWnd()先获得工程的CMainFrame实例的指针,然后使用GetActiveView()获取View的指针,这里说的View就是你继承自CFormView类的View类(在“工程名View.h”中的类),实例代码如下:
CMainFrame *wndFrm = (CMainFrame *)AfxGetMainWnd();
CTestView *wndV……
[/Quote]
用了这个方法,在按Button2时依然会出现debug assert error(line 245),出错的依然是SetWindowText
我创建对话框的代码是这样写的
void CTestView::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CMainFrame *wndfrm = (CMainFrame *)AfxGetMainWnd();
CTestView *wndview = (CTestView *)wndfrm->GetActiveView();
CDialog1 *cdlg = new CDialog1;
cdlg->Create(IDD_DIALOG1,wndview);
cdlg->ShowWindow(SW_SHOW);
}
Gostorm
2011-01-09
打赏
举报
回复
可以先使用AfxGetMainWnd()先获得工程的CMainFrame实例的指针,然后使用GetActiveView()获取View的指针,这里说的View就是你继承自CFormView类的View类(在“工程名View.h”中的类),实例代码如下:
CMainFrame *wndFrm = (CMainFrame *)AfxGetMainWnd();
CTestView *wndView = (CTestView *)wndFrm->GetActiveView();
例子中是一个名为Test的工程。
创建对话框的代码:
CDialog1 *cdlg=new CDialog1;
cdlg->Create(IDD_DIALOG1,
wndView
);
cdlg->ShowWindow(SW_SHOW);
在使用GetParent()->GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("A"))……
应该就OK了
wltg2001
2011-01-09
打赏
举报
回复
上面已经说了,用FindWindowEx吧,得到HWND,然后用API来改,很简单的。
wuxian1001
2011-01-09
打赏
举报
回复
[Quote=引用 8 楼 qfc8513 的回复:]
引用 6 楼 wuxian1001 的回复:
引用 4 楼 oyljerry 的回复:
GetParent()->GetDlgItem(IDC_XXX)
IDC_XXX是Button2的ID
这个方法我试过
我当时是在BUTTON2的点击事件中写入
GetParent()->GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("A"))……
[/Quote]
怎样将FormView作为父窗体参数
是用CWnd::FindWindow来获取FormView窗体的值吗
wltg2001
2011-01-09
打赏
举报
回复
GetParent()->GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("A"))
这个应该是可以的,如果不行,可能是CFormView不是对话框造成的,你可以用FindWindowEx去找到CFormView窗口的句柄,然后接着找到CButton的句柄,用::SetWindowText来改变它。
Gostorm
2011-01-09
打赏
举报
回复
[Quote=引用 6 楼 wuxian1001 的回复:]
引用 4 楼 oyljerry 的回复:
GetParent()->GetDlgItem(IDC_XXX)
IDC_XXX是Button2的ID
这个方法我试过
我当时是在BUTTON2的点击事件中写入
GetParent()->GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("A"))
但运行后会出现Debug Assert Erro……
[/Quote]
你创建对话框的语句中cdlg->Create(IDD_DIALOG1,NULL);把父窗口参数设为了NULL,用GetParent()就不管用了,如果想用GetParent(),在Create函数中将FormView作为父窗体参数.
Eleven
2011-01-09
打赏
举报
回复
修改Dialog2类的构造函数,创建Dialog2对话框的时候传入CFormView类的指针,
wuxian1001
2011-01-09
打赏
举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]
GetParent()->GetDlgItem(IDC_XXX)
IDC_XXX是Button2的ID
[/Quote]
这个方法我试过
我当时是在BUTTON2的点击事件中写入
GetParent()->GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("A"))
但运行后会出现Debug Assert Error,出错的好像是在SetWindowText这一句
请问是怎么回事
我创建Dialog2的方法是在BUTTON1的点击事件中添加
CDialog1 *cdlg=new CDialog1;
cdlg->Create(IDD_DIALOG1,NULL);
cdlg->ShowWindow(SW_SHOW);
写不动代码的人
2011-01-09
打赏
举报
回复
你也可以把FormView对话框指针传到对话框中 通过该指针操作FormView中的按钮
oyljerry
2011-01-09
打赏
举报
回复
GetParent()->GetDlgItem(IDC_XXX)
IDC_XXX是Button2的ID
Dreadnought
2011-01-09
打赏
举报
回复
FindWindowEx获取此按钮的HWND 然后进行操作
wuxian1001
2011-01-09
打赏
举报
回复
[Quote=引用 1 楼 wltg2001 的回复:]
用GetParent可以在Button2 中获取父窗口的指针,通过这个指针来操作上面的控件。
[/Quote]
能具体地说一下吗
我最近才开始学mfc,很多东西不是很懂
对话框
访问
控
件的七种方法
对话框
访问
控
件的七种方法,内容为视频,详细的讲解,可以很好地学习MFC
中
的
对话框
访问
控
件的方式。
详解VC++
访问
对话框
控
件的方式
详解VC++
访问
对话框
控
件的方式,获取和设置
对话框
控
件标题或内容的相关方法介绍
MFC子线程
访问
/
控
制
对话框
程序
控
件
MFC子线程
访问
/
控
制
对话框
程序
控
件
全局变量在
对话框
中
的使用
提供两个全局变量在
对话框
中
使用的实例,一个实例
中
定义了全局指针,可通过指针获取
对话框
编辑框
控
件的值;另一个实例
中
定义了一个全局变量,用于传递
对话框
控
件的值,在VC++6.0
中
运行通过。
VC++
访问
对话框
控
件的方式
本文详细介绍了用VC++
访问
对话框
控
件的方式
界面
15,978
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章