mfc 获得窗口句柄????

在网上老看到说获得窗口句柄就能操作那个窗口了。
我的疑问是,句柄不是handle吗?一个整数?我们应该要获得的是窗口的类的对象的指针才对啊!
望赐教!

在同一进程中,窗口资源的句柄是唯一的,但操作窗口界面的类对象却不唯一。
一般如你所说,获得该窗口的类的对象的指针就可操作该窗口,但前提是这个类对象已经在创建时就关联了一个窗口句柄。而窗口类对象和句柄是可以关联也可以分离的。
比如,任何一窗口类,用其成员方法detatch分离掉窗口句柄后你看看你还能用该类对象操作该窗口么?
所以要操作一个窗口,关键还是要得到它的句柄,至于窗口类对象,可以随时动态创建,想如何操作窗口,就声明有那种成员方法的窗口类,再用attach方法把窗口句柄关联上就可以操作窗口了。
比如我想移动一个窗口,我并不一定需要知道最初这个窗口用的是什么窗口类,我可以动态创建一个临时窗口对象:
CWnd wnd;
wnd.Attach(某窗口句柄)
wnd.Move(参数)
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-04
mfc中封装的CWnd*对于炒作系统而言是没有意义的,CWnd内中的m_hWnd句柄才是炒作系统能识别的窗口表示。至于win32 api为什么不提供windows内部的窗口指针?这个和win32窗体架构是有关的。你在理解了windows最底层的窗口系统,诸如窗口属性,底层消息机制,窗体域绘图等等等之后,你会理解微软的良苦用心的。
例如:::GetWindowText(HWND, LPCTSTR),
微软在win32中希望你这么读:获取第i个窗口的文本。
在MFC中微软希望你这么读:第i个窗口,你的文本是什么?
第2个回答  2011-04-04
handle 是句柄总称啦
窗口句柄是 HWND
HWND hWnd;
第3个回答  2011-04-04
忘了,不过获得父类窗口的是GetParent……,也只是有点印象……
相似回答