请问Winamp风格的一起移动窗口的实现,MoveWindow()/SetWindowPos()不完美 (50分)

ecai 2002-03-15 03:06:14
请问如何实现类似Winamp风格的一起移动的窗口
我使用了3个窗口,需要移动时象winamp一样同时移动,现在是使用SetWindowPos()的方法实现,但是快速移动时有明显分离的情况发生,
请问有没有更好的简单方法???? (拜托不要采用什么移动时抓窗口图片隐藏窗口再显示的方法!!!) ~~~~~~~~

winamp应该就是几个子窗口同时移动的,而且在移动时窗口还是可以更新的
...全文
162 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
2ndboy 2002-03-18
  • 打赏
  • 举报
回复
你的窗口可以实时拖动吗?你拖动主窗口使用的是什么方法,说明白才能对症下药!
Flysnow 2002-03-18
  • 打赏
  • 举报
回复
你说的很有道理,不规则窗口,不知道你画成了什么样子
ecai 2002-03-18
  • 打赏
  • 举报
回复
我试验了OnMoving,但是效果还是不好
我把问题再说得清楚一些,我现在是想作一个类似Windows MediaPlayer
界面的东西,所以窗口是不规则的,而且我用了三个窗口来实现类似抽屉的打开/关闭窗口功能,结果在移动窗口时窗口会分离
OnMoving的方法好像对普通窗口看不出问题,是不是不规则的窗口(还有背景贴图)移动时更新的时间太多?

请各位给出更好的答复!
ecai 2002-03-18
  • 打赏
  • 举报
回复
ok
现在已经解决啦!
同时移动多个窗口,请使用DeferWindowPos() !
达到了完美的效果,其实MFC中就是这么做的,大家可以看CWnd的源代码,到wincore.cpp中查找即可
为了答谢各位回复朋友的支持,加一半分如何?
2ndboy 2002-03-15
  • 打赏
  • 举报
回复
你不是要实时移动吗?我的方法行啊!
不过用111222的更简单一些。
ecai 2002-03-15
  • 打赏
  • 举报
回复
别急,等我测试完一定给你加分
111222 2002-03-15
  • 打赏
  • 举报
回复
快给分啊你,动作好慢呦~
111222 2002-03-15
  • 打赏
  • 举报
回复
注意,上面的消息是WM_MOVING

一般窗口移动的历程是:

WM_MOVING -> WM_MOVING ->WM_MOVING ->WM_MOVE

WM_MOVE是代表窗口已经结束移动,这个时候你再Move别的Window自然会让窗口们出现分离。
111222 2002-03-15
  • 打赏
  • 举报
回复
50分少了点儿………………

我还是收下了,呵呵……………………


首先,你建立你的一个窗口的WM_MOVING消息的影射函数:

void CDlg1::OnMoving(UINT fwSide, LPRECT pRect)
{

MoveWindow(pRect);

CRect rc2;
pDlg2->GetWindowRect(&rc2);

//让对话框2在1的右边
pDlg2->MoveWindow(pRect->right,pRect->top,rc2.Width(),rc2.Height());

pDlg3->GetWindowRect(&rc2);

//让对话框3在1的下边
pDlg3->MoveWindow(pRect->left,pRect->bottom,rc2.Width(),rc2.Height());


}

好了,你可以给分了:)
ecai 2002-03-15
  • 打赏
  • 举报
回复
“在movewindow的时候调用别的窗口的moveWindow函数”
这种简单的方法快速移动时会有窗口分离的现象
BTW:我的几个窗口没有parent-child关系
想想看:如果是父窗口移动时,子窗口的移动不会有分离的现象,可能是SetRedraw(FALSE)然后再SetRedraw(TRUE)?但是没有成功
dct1999 2002-03-15
  • 打赏
  • 举报
回复
不会吧?在movewindow的时候调用别的窗口的moveWindow函数不行?我试过好象不会分离吧,你还作了什么操作?
ecai 2002-03-15
  • 打赏
  • 举报
回复
(SORRY)
你送给其它窗口对窗口的移动也没有意义啊
请问你使用这种方法实现了吗?if yes,请说得详细一些
ecai 2002-03-15
  • 打赏
  • 举报
回复
这种方法不好,窗口要处理的鼠标消息总会有不一样的时候
另外“所有”时什么概念呢?比如WM_MOUSEMOVE消息,它还有鼠标位置的参数,你送给
2ndboy 2002-03-15
  • 打赏
  • 举报
回复
将本窗口收到的所有(是所有)鼠标消息全部转发给要一起移动的窗口,由于移动机制一样,所以就跟着一起移动了。
源码直接下载地址: https://pan.quark.cn/s/8e8699a9ba20 【大一暑期C++大作业——酒店管理系统源码】是一项常见的C++编程任务,其目的是让学生在实践操作中增强对C++语言的理解和运用水平。 该项目的灵感源自清华大学2017届自动化系所布置的暑期实践课题,其核心目标是通过开发一个完整的酒店管理系统的源代码,使学生能够掌握面向对象编程、数据结构与算法、软件工程等多个领域的知识。 酒店管理系统源码的基本概念主要涵盖以下几个层面: 1. **面向对象编程(Object-Oriented Programming, OOP)**:C++作为一种支持面向对象编程的语言,在该项目中类的设计具有核心地位。 可能涉及到的类包括`客房`、`客户`、`预订`等,每个类都具备属性(例如客房类型、价格、入住日期)和功能(例如预订、退房)。 借助类的封装、继承和多态性,能够构建出结构明、具备良好扩展性的系统架构。 2. **数据结构**:酒店管理涉及大量数据的存储和处理。 可能采用的数据结构有数组、链表、队列、栈、哈希表等。 例如,可以用链表记录客房的可用情况,用队列处理预订请求,用哈希表高效地检索客房信息。 3. **文件操作**:为了实现数据的持久化存储,系统需要执行文件的读写操作。 C++的文件流(fstream)库可用于达成这一目标,将客户资料、预订记录等数据保存至磁盘,并在程序启动时进行读取。 4. **用户界面(UI)**:虽然描述中未明确说明,但一个完备的酒店管理系统通常包含用户交互界面。 这可能涉及控制台输入输出,或者更为复杂的图形用户界面(GUI)。 C++可以利用标准库如iostream进行基础的控制台交互,或借助第三方库如Qt或wxWidgets开发GU...

16,550

社区成员

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

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

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