希望懂点的 教教。。

hdxu8511 2010-12-06 10:35:55
在页面A的控件得到一个参数, 应该是说页面A与之对应有一个类,事实上就是这类的成员变量得到的这个参数。
问题:怎么能在另一个页面对应的类B的成员函数中利用到这个变量。

我考虑过用friend在A中申明B为友元类,但是这种方法也没有实现。。。 望给个方法。。。
...全文
98 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 hdxu8511 的回复:]
thanks 虽然没有成功,但是你是难得的回帖后还回头来看的
[/Quote]dwIP值没收到?
不会吧
你先前的错误是把指针作为参数了
显示参数其实只能是整数
你可以发个10或500这样的明数做个实验
hdxu8511 2010-12-08
  • 打赏
  • 举报
回复
thanks 虽然没有成功,但是你是难得的回帖后还回头来看的
向立天 2010-12-08
  • 打赏
  • 举报
回复
void CCdialogIP::OnQueding() 
{
// TODO: Add your control notification handler code here
char tempBuf[200];
DWORD dwIP;
CChatDlg dlg;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
sprintf(tempBuf,"%lu",dwIP);
::PostMessage(dlg.m_hWnd,WM_MYIPMESSAGE,0,(LPARAM)tempBuf);
dlg.DoModal();
}

这里改成
void CCdialogIP::OnQueding() 
{
// TODO: Add your control notification handler code here
DWORD dwIP;
CChatDlg dlg;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
::PostMessage(dlg.m_hWnd,WM_MYIPMESSAGE,0,(LPARAM)dwIP);
dlg.DoModal();
}

试试

hdxu8511 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xianglitian 的回复:]
引用 15 楼 hdxu8511 的回复:
引用 12 楼 xianglitian 的回复:
可以通过发自定义消息把变量值传过去


能不能具体点。。。。

自定义消息如果你不会发的话可以百度一下
我就不替你搜了
发消息可以设置两个参数
你只要通过其中一个就可以把数据送出去
[/Quote]
这位仁兄:依照你给的方法我实践了,但是出现一些问题。
先写下自己的做法,希望你耐心看,指出错误。。
我在A页面类中中用一个局部变量,保存要传递的值。然后用PostMessage函数传递消息,并在B页面类中写出消息映射和相应函数(旨在能变量接受A页面类中的变量).
具体代码:
A类中:
void CCdialogIP::OnQueding() 
{
// TODO: Add your control notification handler code here
char tempBuf[200];
DWORD dwIP;
CChatDlg dlg;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
sprintf(tempBuf,"%lu",dwIP);
::PostMessage(dlg.m_hWnd,WM_MYIPMESSAGE,0,(LPARAM)tempBuf);
dlg.DoModal();
}


B类中:
在头文件和源文件添加了相应的消息映射
下面是响应函数的代码:
void CChatDlg::OnRecvIP(WPARAM wParam,LPARAM lParam)
{
dwIP=(DWORD)lParam;
}
//dwIP在B类中已经实现申明为成员变量

不知道我上面的过程,错误在哪里?
hdxu8511 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xianglitian 的回复:]
可以通过发自定义消息把变量值传过去
[/Quote]

能不能具体点。。。。
hdxu8511 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 visualeleven 的回复:]
引用楼主 hdxu8511 的回复:
在页面A的控件得到一个参数, 应该是说页面A与之对应有一个类,事实上就是这类的成员变量得到的这个参数。
问题:怎么能在另一个页面对应的类B的成员函数中利用到这个变量。

我考虑过用friend在A中申明B为友元类,但是这种方法也没有实现。。。 望给个方法。。。

你的类A和类B有什么关系?
[/Quote]

都是CDialog类的子类
Eleven 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 hdxu8511 的回复:]
在页面A的控件得到一个参数, 应该是说页面A与之对应有一个类,事实上就是这类的成员变量得到的这个参数。
问题:怎么能在另一个页面对应的类B的成员函数中利用到这个变量。

我考虑过用friend在A中申明B为友元类,但是这种方法也没有实现。。。 望给个方法。。。
[/Quote]
你的类A和类B有什么关系?
向立天 2010-12-07
  • 打赏
  • 举报
回复
可以通过发自定义消息把变量值传过去
haogeai123 2010-12-07
  • 打赏
  • 举报
回复
LZ出来说说话
无边1 2010-12-07
  • 打赏
  • 举报
回复
如果两个页面不拥有同一父窗口,只是稍微麻烦点,将两个页面父窗口的父窗口找出,看看有没有交集。或者为两个页面分别创建全局指针也是可以的。

刚才打漏了
无边1 2010-12-07
  • 打赏
  • 举报
回复
如果两个页面拥有共同的父窗口,在父窗口中一开始为两个类申请两变量及CLASSA m_a; CLASSB m_b;
然后用两个变量创建页面。
使用:
1.在父窗口类的cpp中申请一个全局的指针,在h中extern,如CMyView* theView = NULL;CMyDlg* theDlg = NULL; (在h头文件中extern CMyView* theView;)
2.在父窗口所属类的构造函数中添加theView = this;或 theDlg = this;
3.然后想使用任何参数m_para只要“theView->m_a.m_para”即可

如果两个页面拥有同一父窗口,只是稍微麻烦点,将两个页面父窗口的父窗口找出,看看有没有交集。或者为两个页面分别创建全局指针也是可以的。
ctwoz 2010-12-07
  • 打赏
  • 举报
回复
楼主问题不清楚…我的理解结果:一个类包含另一个类的头文件,可引用其公有变量…
ctwoz 2010-12-07
  • 打赏
  • 举报
回复
包含头文件,可引用公有变量
varding 2010-12-07
  • 打赏
  • 举报
回复
把A的句柄hwndA传给B(或者对象指针),然后直接在B里面访问A页面上的控件

比如:
::GetDlgItem(hwndA,IDC_EDIT1)->SetWindowText("...");//IDC_EDIT1就是A里面的某个控件ID
用这种方式只要一个A页面的句柄就可以直接访问A中所有的控件
向立天 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hdxu8511 的回复:]
引用 12 楼 xianglitian 的回复:
可以通过发自定义消息把变量值传过去


能不能具体点。。。。
[/Quote]
自定义消息如果你不会发的话可以百度一下
我就不替你搜了
发消息可以设置两个参数
你只要通过其中一个就可以把数据送出去
wltg2001 2010-12-06
  • 打赏
  • 举报
回复
说得不太清楚,不过如果你想在B类中用A类中的数据,那么一定要获取A类对象的指针。
Sou2012 2010-12-06
  • 打赏
  • 举报
回复
创建B类的时候, 把A类的指针传给B, 作为一个成员变量保存。

比如

class A
{
public:
CString m_strText;
}

class B
{
public:
B(A *pA)
{
m_pA = pA;
}

CString GetAText()
{
return m_pA->m_strText;
}
A *m_pA;
}


dianhui 2010-12-06
  • 打赏
  • 举报
回复
没看明白楼上要问什么,是不是类A中一个成员变量也要让类B可以用到吗?
这方法很多?你可以将类A中的那个变量设成static,也可以该变量将变量设成全局让类A与类B同时用到,还可以通过消息,让类A以消息将变量发送给类B,当然这两个类都是窗口类。
hdxu8511 2010-12-06
  • 打赏
  • 举报
回复
自己顶下,急切的想知道原理。。

15,979

社区成员

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

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