两个窗口间怎么传递数据?

ecjtuboy 2006-06-16 10:21:00
在窗口A上单击了按钮 进入窗口B
在窗口B上得文本框输入数据,如何把数据传给窗口A里面得变量?
...全文
445 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Scarroot 2006-06-28
  • 打赏
  • 举报
回复
mark
zhh007 2006-06-17
  • 打赏
  • 举报
回复
mark!
yuyuan830705 2006-06-16
  • 打赏
  • 举报
回复
-.-#哦。我好人做到底吧。我作了一个简单程序。已经完全实现了。先做两个个修正:
1.不用虚声明ClassB。在ClassA的cpp文件里是可以include ClassB.h 的滴。
2.m_Parent 成员变成public属性
然后:
m_Parent 是在B中申明的 A怎么传递指针给他啊:
回答:
CClassA::OnButton1(){
:
if ( NULL == m_Child)
{
m_Child = new CClassB;
}
m_Child->m_Parent = this;
m_Child->DoModal();
:
}
m_Child->GetInputString()获得B的全局变量,怎么个获得法啊?
回答:GetInputString()定义为ClassB的public函数,作用就是获得一个全部变量。
(1)ClassA.h
#define WM_MYMSG (WM_USER + 0x2000)
(2)ClassA.cpp
BEGIN_MESSAGE_MAP(CInterWideProjDlg, CDialog)
ON_MESSAGE(WM_MYMSG, OnMyMessage)
END_MESSAGE_MAP()
:
CClassA::OnMyMessage( WPARAM wParam, LPARAM lParam)
{
m_Child->GetInputString();
}
(3)ClassB.cpp
CClassB::GetInputString()
{
return m_csString;
}
:
CClassB::OnButton1()
{ // 假定在B的BTN1按钮按下时让A获得csString的值
m_Parent->SendMessage( WM_MYMSG, 0, 0);
}
ecjtuboy 2006-06-16
  • 打赏
  • 举报
回复
以上申明编译通过
m_Parent 是在B中申明的 A怎么传递指针给他啊
m_Child->GetInputString()获得B的全局变量,怎么个获得法啊?
yuyuan830705 2006-06-16
  • 打赏
  • 举报
回复
不对不对。这样:
A的头文件里:
class DlgB;
class DlgA:public CDialog
{
private:
DlgB *m_child;
}
还有:类最好用C开头~~~
ecjtuboy 2006-06-16
  • 打赏
  • 举报
回复
照你纠正的方法 也不行啊
我的窗口A是 创建工程的窗口 有关系么?
ecjtuboy 2006-06-16
  • 打赏
  • 举报
回复
A的头文件里:
#include "DlgB.h"
class DlgA:public CDialog
{
private:
DlgB *m_child;
}
……
B的头文件里:
#include "DlgA.h"
class DlgB:public CDialog
{
public:
DlgA *m_parent;
}

编译:……missing ';' before '*'
DlgA :missing storage-class or type specifiers
……
yuyuan830705 2006-06-16
  • 打赏
  • 举报
回复
sorry。用一点纠正。我编译后,可以,但是要纠正一下:
在B的头文件里面。#include "ClassA.h"。然后,在ClassA的头文件里面。声明一个空的B类。就是一个B的虚申明(名称不知道对不对)

在A的头文件里面。#include "ClassB.h"。然后,在ClassB的头文件里面。声明一个空的A类。就是一个A的虚申明(名称不知道对不对)
因为A要用B的public函数。所以我说反了。
yuyuan830705 2006-06-16
  • 打赏
  • 举报
回复
在B的头文件里面。#include "ClassA.h"。然后,在ClassA的头文件里面。声明一个空的B类。就是一个B的虚申明(名称不知道对不对)
ecjtuboy 2006-06-16
  • 打赏
  • 举报
回复
aa3000(杀手K) ( ) ,B由A创建是什么意思啊?
我的窗口A是创建工程的窗口 B是新引入的窗口,他们分别有自己的cpp文件 A怎么获得B成员啊?


yuyuan830705() ( ) 信誉:100

classB
{
:
public:
ClassA* m_Parent;
:
}
定义通过不了编译 ClassA 不能识别
yuyuan830705 2006-06-16
  • 打赏
  • 举报
回复
这个最好用消息来做。比如:
m_Parent->SendMessage(WM_XXX, 0, 0);
1.其中m_Parent是A的句柄,可以在“在窗口A上单击了按钮”把指针传给B,具体些就是:
classB
{
:
public:
ClassA* m_Parent;
:
}
2.WM_XXX是定义在A类里面的消息,功能比如就是调用m_Child->GetInputString()获得B的全局变量。这关系到A类里面也的有B的指针,在B画面显示时候可以获得。比如:
classA
{
:
private:
ClassB* m_Child;
:
}
3.后两个参数无所谓啦。当然如果用得好的话可以写的更加漂亮。
dic_walter 2006-06-16
  • 打赏
  • 举报
回复
哦,理解错了,呵呵。不好意思,用SendMessage()即可完成
dic_walter 2006-06-16
  • 打赏
  • 举报
回复
在A中先给对象B的str赋值,然后再打开B
aa3000 2006-06-16
  • 打赏
  • 举报
回复
如果B由A创建,B在关闭前把数据保存在一个成员变量里,关闭后A获取B的那个成员变量
ecjtuboy 2006-06-16
  • 打赏
  • 举报
回复
问题得到解决
非常感谢 偶是新手 以后请多多关照
ecjtuboy 2006-06-16
  • 打赏
  • 举报
回复
非常感激你的帮忙
再厚着脸皮问下 ^_^
classB不在 A的头文件里虚申明 编译会出错啊 即便在cpp文件里#include classB
city_freeman 2006-06-16
  • 打赏
  • 举报
回复
发消息 使A更新

15,979

社区成员

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

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