jon*_*ham 2 c++ windows window process visual-c++
Windows管理的2个窗口是否可以具有相同的窗口句柄值?
考虑这两种情况,当这两个窗口由同一个过程打开,并且这两个窗口由两个不同的进程打开时.
快速回答:不,它是不可能的,如果它们在同一个桌面内,窗口管理器发出的每个窗口句柄在窗口的所有存在中都是唯一的(在它的桌面内),否则它无法唯一地标识这样的窗口系统当前窗口站桌面(由MSDN定义为"逻辑显示表面","包含用户界面对象,如窗口,菜单和钩子;它可用于创建和管理窗口").
答案很长:
这里讨论的问题,指向本文.似乎HWNDs是桌面本地的,所以你可以有两个相同的HWNDs指向两个不同的窗口,但它们必然在两个独立的桌面中,所以没有歧义(你传递给每个user32函数的WM句柄隐含地指向当前桌面,要转到另一个必须使用的桌面,SetThreadDesktop如果您的线程拥有任何包含桌面的对象进入当前桌面,则此调用将失败.
另一方面,当窗口被销毁时,其句柄可以被重用,但是IIRC窗口管理器采用了一些技术来避免立即重用句柄.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |