几何尺寸与公差论坛

 找回密码
 注册
查看: 2010|回复: 2

【转帖】关于CWnd::FindWindow一个有趣的问题???

[复制链接]
发表于 2007-6-2 12:54:52 | 显示全部楼层 |阅读模式
众所周知,WIN32程序具有自已单独的地址空间,在一个进程中取别的进程中的对象的指针是没有意义。但用CWnd::FindWindow却可以取到别的进程CWND及其派生类的指针并能通过这个指针调用其成员函数,观察所得的指针变量值并不在2G以后的共享内存区,请问这是什么原因?
 楼主| 发表于 2007-6-2 12:55:32 | 显示全部楼层

回复: 【转帖】关于CWnd::FindWindow一个有趣的问题???

概念性错误。你取到的窗口的确是别的进程的窗口,但该窗口的hwnd却是GDI的全局对象,所有进程均可使用,至于CWnd对象更是你的进程自己的一个变量而已,Windows才不知道CWnd是什么东西。   
  说确切点:你调用FindWindow函数时,你的程序会首先调用windows   api中的FindWindow函数,取到hwnd,然后你的程序再用这个hwnd构造一个CWnd对象。这个对象只有你的程序才能识别。关键:hwnd才是windows真正用于管理窗口的一个句柄,而CWnd脱离了MFC环境,仅仅是一段数据罢了。
 楼主| 发表于 2007-6-2 12:56:07 | 显示全部楼层

回复: 【转帖】关于CWnd::FindWindow一个有趣的问题???

句柄其实就是Windows的内部指针的一种封装,   
  将一个内部的结构体变量指针变成一个长整型,   
  这个数据值当然是全局共享的了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-8 07:37 , Processed in 0.036327 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表