导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • MFC Plus
  • VC++技术资源

如何实现两个不同进程的窗口实现移动跟随

XiongYouXiaoZhi 2010-07-06 09:06:51
我有两个窗口 A和B 分别是两个EXE
我想实现 移动A 的同时 B也跟随移动

我现在的做法是 在 A的MOUSEMOVE里 向B发送消息移动
但这样 B移动的很慢。明显可以感觉到移动有很明显的轨迹。

怎么做才能比较快速的处理。。让B紧紧跟随A移动

补充下:是WIN32程序
...全文
285 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weblai 2010-07-06
这个,估计,很难。
回复
XiongYouXiaoZhi 2010-07-06
显示虚拟边框 不是我要的效果啊。。
回复
雪影 2010-07-06
可考虑使用虚拟边框的方法,在拖动时只拖动虚拟边框,鼠标弹起时在移动窗口到指定位置。

虚拟边框 CRectTracer
回复
XiongYouXiaoZhi 2010-07-06
有个地方说错了 不是MOUSEMOVE 而是 在A的WM_MOVE里 postmessage到B 然后B再MoveWindow
回复
XiongYouXiaoZhi 2010-07-06
就是 用的 PostMessage
回复
jason176374 2010-07-06
你如果是SendMessage的话,改成PostMessage试一下。
回复
jason176374 2010-07-06
[Quote=引用 10 楼 hdqqq 的回复:]

你需要搞一个进程间通讯的流程,靠窗口消息不是很可靠,用管道。
[/Quote]

现在的瓶颈应该是频繁的movewindow造成的。所以用管道
也未必会有改善。
回复
hdqqq 2010-07-06
你需要搞一个进程间通讯的流程,靠窗口消息不是很可靠,用管道。
回复
maoenpei002 2010-07-06
其实MoveWindow是一个很好的解决方案,类似于千千静听这种的,直接在A窗口里面MoveWindow就可以了。
他唯一的问题在于,MoveWindow导致了一次重绘,如果界面画出来的速度很慢,那就有问题了。

有一个效率相对比较高的解决方案是,把B窗口的绘图信息全部保存到一张位图中(也可以用截图的方式),当拖动窗口时,建一个和B一样大小一样位置的窗口C,把B隐藏了,C只处理WM_PAINT消息,并把位图句柄传进去,不停让他帖这张图就行了,因为反正不可能有2个鼠标,在拖动的时候还需要处理别的消息,等move结束了再关掉C,把B显示出来。

不知道还有没有比较方便而且有效的方法。
回复
山伟 2010-07-06
A移动,先隐藏B,A停止,move B并show

不停用MoveWindow移动肯定会卡
回复
ll305vc 2010-07-06
你的意思是不是保持相当位置不变
这样有2个办法 1是在你的A停止下来时告诉B移动的相应位置,B移动过去就好了,和XP差不都,XP移动也是最后一下才移动过去的,2就是你在移动的时候不停的告诉B移动,这样效果肯定是不好的,感觉有点卡
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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