读书人

子窗口拖放以致其变成了顶层窗口

发布时间: 2013-01-04 10:04:18 作者: rapoo

子窗口拖放导致其变成了顶层窗口
我vc程序里创建了多个子窗口,并且设置了叠放z次序,结果任意的一个子窗口拉伸时就会变成了顶层窗口,在xp下有这个问题,在win7下没有这个问题,请问那位大虾有解决办法。
[解决办法]
Z次序指的是窗口在屏幕上的顺序,如果窗口被激活并且发生拉伸操作,系统就会自动把窗口放在Z顺序的顶端
[解决办法]
来学习的,帮顶一个。
[解决办法]
不理解啊,手动拉伸不可能不获得焦点的吧。
[解决办法]
我曾经帮人解决过拖动时Z次序改变的问题,只要简单的处理即可不改变原来Z次序,你参考一下我估计能解决,如下图:
子窗口拖放以致其变成了顶层窗口
代码下载:http://www.kuaipan.cn/file/id_54645689245761784.htm

我不想再在CSDN上上传资源了,太费劲,直接弄的下载地址。
[解决办法]
不知道用wndTopmost 可以不。。。

还有,没有看到,你的拖动代码。。只看到创建窗口代码。。。
既然是在改变大小的时候出的问题
应该贴出问题代码呀
[解决办法]
关键还是:
SetWindowPos(&wndTop ,0,0,0,0,SWP_SHOWWINDOW
[解决办法]
SWP_NOSIZE
[解决办法]
SWP_NOMOVE);

参数 &wnd 是 被 拉伸 窗口的 上一个 窗口(即 那个 覆盖 拉伸窗口的 那个 窗口。
即 InsertAfter

思路:
CWnd* m_wnd = new CWnd();
要 派生 一个 CMyWnd。
加 static CWnd *m_pwnd【4】;
初始化 CMyWnd::CWnd *m_pwnd【】={0};

先在 Create 中 把 产生的 窗口 记录下来:
Creat 后:
m_pwnd【nID-WM_USER】=this;

在 MyWnd 的 OnSize() 中。
找到 那个 覆盖 拉伸窗口的 那个 窗口,pWnd
int id=GetDlgConctrlId();// id < 3
CWnd *pwnd=m_pwnd【nID-WM_USER+1】;// !!!!

然后就是 SetWindowPos。第一个参数 为 pWnd。

你 先 试试 吧,我在 vc6 上 已经 成功。

[解决办法]
该回复于2012-12-21 11:02:48被管理员删除

读书人网 >VC/MFC

热点推荐