小白求问MFC 如何 窗口间通信?

ollyice2012 2014-12-01 11:44:01
lz 最近在学习 mfc,对 父子窗口之间的通信 有一点了解了,但是,不知道 该 如何在 非 父子窗口之间 通信 。
举例来说,有一个“类列表”和“属性列表”,用户 单击 “类列表”中的某一个 类,"属性列表“中,就会出现该类的 参数属性。这该如何做?
补充,这个例子中,我没有间 任何 Dialog,我是用 CDockablePanel 做了两个悬浮框,这两个 悬浮框窗口 之间该如何通信?

lz 小白,刚接触 MFC 不久,对很多东西还不是很明白,求大牛们 多帮帮忙呀!!
...全文
658 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-12-03
  • 打赏
  • 举报
回复
wyb1983510 2014-12-03
  • 打赏
  • 举报
回复
引用 7 楼 ollyice2012 的回复:
[quote=引用 3 楼 wyb1983510 的回复:] 自定义消息,通过句柄发送自定义的消息
能不能 稍微详细些呀。自定义 消息,是要怎么做呢?拜谢~[/quote] 参考http://blog.csdn.net/qihailong123456/article/details/6777112或者 http://blog.csdn.net/jinnee_cumtb/article/details/4524375 网上有很多例子
hhhh63 2014-12-02
  • 打赏
  • 举报
回复
引用 15 楼 ollyice2012 的回复:
怎么去自定义消息,我下午看了大该明白了,但是 怎么用sendmessage呀?总是失败。。
换一个又简单,又实用,又通用的方法吧。
class CxxApp : public CWinAppEx
{
// 1. 在CxxApp类.h中加入如下变量
public:
	CAWin * m_pA;
	CBWin * m_pB;
	CCWin * m_pC;

// 2. 在CxxApp 构造函数中初始化这个几变量
CxxApp::CxxApp()
	: m_pA(0)
	, m_pB(0)
	, m_pC(0)
{
....
}

// 3. 在MainFrame中赋值
theApp.m_pA = new A();
theApp.m_pB = new B();
theApp.m_pC = new C();

// 4. 在任何类中使用
theApp.m_pA->setdata(...);
theApp.m_pB->init(...);
theApp.m_pC->getrect();
等以后熟了,再用其它的方法。
xiaohuh421 2014-12-01
  • 打赏
  • 举报
回复
除了消息. 也可以全局变量 socket通信 等等多线程, 多进程通信的方法都可以用到不同窗口上.
wyb1983510 2014-12-01
  • 打赏
  • 举报
回复
自定义消息,通过句柄发送自定义的消息
  • 打赏
  • 举报
回复
获取窗口句柄 SendMessage或 PostMessage
shen_wei 2014-12-01
  • 打赏
  • 举报
回复
窗口句柄传递消息。。
ollyice2012 2014-12-01
  • 打赏
  • 举报
回复
引用 13 楼 hhhh63 的回复:
[quote=引用 10 楼 ollyice2012 的回复:] [quote=引用 8 楼 hhhh63 的回复:] 建议在类表窗口中加一个变量 m_pProperty 指向属性窗口,点击类表后直接调用属性窗口的方法m_pProperty->init(类名)。 同一个应用程序的窗口间通信方法: 1. 父窗口到子窗口,直接调用子窗口的方法或属性 2. 子窗口到父窗口,发消息 3. 非父子关系,看情况选择上面一种,象LZ这种明显的主从关系,建议用第一种方法。
那 一般的窗口 和 CXXView 之间 是什么关系呢?如果,我在一个窗口A改动了数据,想让CXXview显示的数据也跟着改动,该如何做? 我是在 MainFrme.cpp 里调用了 窗口A。[/quote]属于第三种情况,用发消息的方法,同意11楼[/quote] 怎么去自定义消息,我下午看了大该明白了,但是 怎么用sendmessage呀?总是失败。。
hhhh63 2014-12-01
  • 打赏
  • 举报
回复
补充一点,象工具条上的安钮,可以发送命令和通知消息到所有窗口,每个窗口都可以接收处理。
hhhh63 2014-12-01
  • 打赏
  • 举报
回复
引用 10 楼 ollyice2012 的回复:
[quote=引用 8 楼 hhhh63 的回复:] 建议在类表窗口中加一个变量 m_pProperty 指向属性窗口,点击类表后直接调用属性窗口的方法m_pProperty->init(类名)。 同一个应用程序的窗口间通信方法: 1. 父窗口到子窗口,直接调用子窗口的方法或属性 2. 子窗口到父窗口,发消息 3. 非父子关系,看情况选择上面一种,象LZ这种明显的主从关系,建议用第一种方法。
那 一般的窗口 和 CXXView 之间 是什么关系呢?如果,我在一个窗口A改动了数据,想让CXXview显示的数据也跟着改动,该如何做? 我是在 MainFrme.cpp 里调用了 窗口A。[/quote]属于第三种情况,用发消息的方法,同意11楼
用户 昵称 2014-12-01
  • 打赏
  • 举报
回复
同一工程中,各窗口之间互相查找最可靠的方式是全局变量,或成员变量,找到窗口后与窗口通信,一般用SendMessage
hubo86915531 2014-12-01
  • 打赏
  • 举报
回复
引用 10 楼 ollyice2012 的回复:
[quote=引用 8 楼 hhhh63 的回复:] 建议在类表窗口中加一个变量 m_pProperty 指向属性窗口,点击类表后直接调用属性窗口的方法m_pProperty->init(类名)。 同一个应用程序的窗口间通信方法: 1. 父窗口到子窗口,直接调用子窗口的方法或属性 2. 子窗口到父窗口,发消息 3. 非父子关系,看情况选择上面一种,象LZ这种明显的主从关系,建议用第一种方法。
那 一般的窗口 和 CXXView 之间 是什么关系呢?如果,我在一个窗口A改动了数据,想让CXXview显示的数据也跟着改动,该如何做? 我是在 MainFrme.cpp 里调用了 窗口A。[/quote] 发消息给CMainFrame 然后通过CMainFrame刷新视图 或者你可以直接CXXView 自定义消息接收函数 哪里需要更新从哪里发消息
ollyice2012 2014-12-01
  • 打赏
  • 举报
回复
引用 8 楼 hhhh63 的回复:
建议在类表窗口中加一个变量 m_pProperty 指向属性窗口,点击类表后直接调用属性窗口的方法m_pProperty->init(类名)。 同一个应用程序的窗口间通信方法: 1. 父窗口到子窗口,直接调用子窗口的方法或属性 2. 子窗口到父窗口,发消息 3. 非父子关系,看情况选择上面一种,象LZ这种明显的主从关系,建议用第一种方法。
那 一般的窗口 和 CXXView 之间 是什么关系呢?如果,我在一个窗口A改动了数据,想让CXXview显示的数据也跟着改动,该如何做? 我是在 MainFrme.cpp 里调用了 窗口A。
大树学长 2014-12-01
  • 打赏
  • 举报
回复
通过doc来传输数据的。 发送数据: 获取文档指针 pDoc->infoArray[0].InsertAt(0," 数据"); pDoc->add=true; pDoc->UpdateAllViews(NULL);//刷新显示 接受数据: 获取文档指针 if(pDoc->add) { CString str; str = pDoc->InfoArray[0].GetAt(0);//str = 数据 }
hhhh63 2014-12-01
  • 打赏
  • 举报
回复
建议在类表窗口中加一个变量 m_pProperty 指向属性窗口,点击类表后直接调用属性窗口的方法m_pProperty->init(类名)。 同一个应用程序的窗口间通信方法: 1. 父窗口到子窗口,直接调用子窗口的方法或属性 2. 子窗口到父窗口,发消息 3. 非父子关系,看情况选择上面一种,象LZ这种明显的主从关系,建议用第一种方法。
ollyice2012 2014-12-01
  • 打赏
  • 举报
回复
引用 3 楼 wyb1983510 的回复:
自定义消息,通过句柄发送自定义的消息
能不能 稍微详细些呀。自定义 消息,是要怎么做呢?拜谢~
ollyice2012 2014-12-01
  • 打赏
  • 举报
回复
引用 4 楼 xiaohuh421 的回复:
除了消息. 也可以全局变量 socket通信 等等多线程, 多进程通信的方法都可以用到不同窗口上.
现在,我是用了全局变量,但是 ,怎么能够让,另一个窗口更新呢?我发先 另一个窗口中的参数的值虽然变量,但是窗口没有刷新,UI显示的 还是和原来一样
hubo86915531 2014-12-01
  • 打赏
  • 举报
回复
自定义消息函数 自定义数据类的调用

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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