请问Winamp风格的一起移动窗口的实现,MoveWindow()/SetWindowPos()不完美 (50分) 这种方法不好,窗口要处理的鼠标消息总会有不一样的时候另外“所有”时什么概念呢?比如WM_MOUSEMOVE消息,它还有鼠标位置的参数,你送给 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (SORRY)你送给其它窗口对窗口的移动也没有意义啊请问你使用这种方法实现了吗?if yes,请说得详细一些 不会吧?在movewindow的时候调用别的窗口的moveWindow函数不行?我试过好象不会分离吧,你还作了什么操作? “在movewindow的时候调用别的窗口的moveWindow函数”这种简单的方法快速移动时会有窗口分离的现象BTW:我的几个窗口没有parent-child关系想想看:如果是父窗口移动时,子窗口的移动不会有分离的现象,可能是SetRedraw(FALSE)然后再SetRedraw(TRUE)?但是没有成功 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()); }好了,你可以给分了:) 注意,上面的消息是WM_MOVING一般窗口移动的历程是:WM_MOVING -> WM_MOVING ->WM_MOVING ->WM_MOVEWM_MOVE是代表窗口已经结束移动,这个时候你再Move别的Window自然会让窗口们出现分离。 我试验了OnMoving,但是效果还是不好我把问题再说得清楚一些,我现在是想作一个类似Windows MediaPlayer界面的东西,所以窗口是不规则的,而且我用了三个窗口来实现类似抽屉的打开/关闭窗口功能,结果在移动窗口时窗口会分离OnMoving的方法好像对普通窗口看不出问题,是不是不规则的窗口(还有背景贴图)移动时更新的时间太多?请各位给出更好的答复! ok现在已经解决啦!同时移动多个窗口,请使用DeferWindowPos() !达到了完美的效果,其实MFC中就是这么做的,大家可以看CWnd的源代码,到wincore.cpp中查找即可为了答谢各位回复朋友的支持,加一半分如何? ActiveX 几个比较基础的问题,盼解答! 关于String Table问题请教 急.....如何把程序要调用的dll文件改名? 单文档程序中的View上弹出一个右键菜单,怎么样把其中的项灰化? 怎么在CListCtrl的同一行里设置两个以上的图标? 一道简单的程序题!谁会呀! 怎样制作一个(含32x32的大图标和16X16小图标)图标资源 请问如何实现右键菜单. MFC GDI中如何使用双缓冲 求助 数字识别 各位弟兄,我终于解脱了!最近都在做些什么?很想念你们 女朋友和我打赌说:汇编语言不可以编写屏幕保护程序!!!
你送给其它窗口对窗口的移动也没有意义啊
请问你使用这种方法实现了吗?if yes,请说得详细一些
这种简单的方法快速移动时会有窗口分离的现象
BTW:我的几个窗口没有parent-child关系
想想看:如果是父窗口移动时,子窗口的移动不会有分离的现象,可能是SetRedraw(FALSE)然后再SetRedraw(TRUE)?但是没有成功
首先,你建立你的一个窗口的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());
}好了,你可以给分了:)
我把问题再说得清楚一些,我现在是想作一个类似Windows MediaPlayer
界面的东西,所以窗口是不规则的,而且我用了三个窗口来实现类似抽屉的打开/关闭窗口功能,结果在移动窗口时窗口会分离
OnMoving的方法好像对普通窗口看不出问题,是不是不规则的窗口(还有背景贴图)移动时更新的时间太多?请各位给出更好的答复!
现在已经解决啦!
同时移动多个窗口,请使用DeferWindowPos() !
达到了完美的效果,其实MFC中就是这么做的,大家可以看CWnd的源代码,到wincore.cpp中查找即可
为了答谢各位回复朋友的支持,加一半分如何?