句柄是一种特殊的指针,CWnd* 指向的是屏幕上的窗口,CDC* CBitmap* 指向的是窗口上的客户区进行绘画操作(客户区简单的说就是除了菜单是标题,工具条等之外的).
解决方案 »
- vc6.0中project里的add to project的components and control,不管添加什么总是提示“不支持此接口”
- 如何让程序界面风格不随系统的主题的改变而改变
- IDR_MAINFRAME这个菜单资源是什么时候载入的?
- 有高手能说一下为什么要用DispatchMessage?
- Clist类的removeat的问题
- 用Installshield10.0如何获得用户选择的安装路径
- 问个com最简单的问题(还没有用过com,惭愧)
- 木马
- 大虾们救命呀!!!!!!!!!!!!!!!!!!!!!!
- 关于关键字过滤:输入关键字用逗号风格
- 关于如何实现C++对象永久保存?(不使用MFC)请高手帮帮忙
- OICQ消息的发送!(偶看这人气足特来提问)
内存绝不是特殊的指针,在Windows中为了保护系统完整性有些数据结构是以内核对象的形式给出的,如:Window,Pen,Brush,Thread,DC等,这些内核对象不许用户去通过指针操作,但为了使用户用控制它们,操作系统给每一个对象一个HANDLE,然后提供了一些函数来使用其中的功能,而CWnd指针只是一个指向类对象的指针,CWnd只是把和HWND相关的操作封装了一下而已
象 CWnd *hello ;生成的就是视窗类指针!!
以大写H开头的诗句柄!!
你可以去查一下 MSDN !!!
句柄:唯一标识一个对象,相当于对象,给一个函数传入一个句柄,就是告诉函数你要处理的是哪个对象。纯API编程时使用句柄。
还有HDC和 CDC
谢谢:)
大家多多发言一起讨论学习嘛:)
CWnd是一个类,它封装了窗口的大部分功能
用它定义的指针可实现窗口的一些操作
前者是SDK专用,后者是MFC专用
像HDC和CDC也差不多(这是环境句柄,如内存)
要得到各个窗口的HWND又怎么半呢?
大家也踊跃问问提 问问题也有分!!!
要得到各个窗口的HWND又怎么办呢?
而指针只能操纵用户程序自己的地止空间中的数据.
句柄是操作系统相关的,指针是用户相关的
HDC=::GetDC(NULL)是得到桌面的设备描述表 那得到各窗口的HDC怎么办呢?
要得到各个窗口的HWND又怎么办呢?(外加20分)
GetClientRect()
句柄详情还是看看WINDOWS核心编程吧,那个解释的很清楚。
就得到了handle,对不对?大家指点
Windows通过句柄来管理如菜单、窗口、文件、光标等一切对象,对于每一对象,Windows提供一个存在于内存中的数据结构来对这些对象进行描述,而句柄就是操作系统表示这些结构的一个32位的值,简单的说,就是这些数据结构的ID。而其中有些对象是与进程相关的(例如文件句柄),有的不是(例如窗口),与进程相关的句柄不可以在所有进程中任意传递,与进程无关的则可以。
对于内存指针,在Win16中,所有指针都可以在进程间相互传递,相互访问进程当中的数据,在Win32中,操作系统欺骗每一个进程,让每一个进程都以为自己拥有4GB的内存,而且内存中只有自己在运行,这时如果进程间相互传递地址指针,是无效的,A进程传递了一个值为0X00FC8873的指针给进程B,进程B去访问时,有两种结果,一是访问出错,二是访问到了本进程内的数据。
2:CWnd *、CDC*、CBitmap* 存放内存中某个CWnd、CDC、CBitmap对象的地址。瞎扯!
CWND类有个变量m_hwnd,可以直接用
CWND还有如下函数,具体情况具体用
GetDesktopWindow Retrieves the Windows desktop window.
GetForegroundWindow Returns a pointer to the foreground window (the top-level window with which the user is currently
GetTopWindow Returns the first child window that belongs to the CWnd.
GetWindow .....
FindWindow Returns the handle of the window, which is identified by its window name and window class. 或者GetDlgItem,用于对话框与子窗口在CWindo与SDK中还有GetWindowLong用与找父窗口
2SDK中FindWindow FindWindowEx GetDesktopWindow GetForegroundWindow GetNextWindow GetParent GetTopWindow GetWindow WindowFromPoint
都可以实现特定的目的,CWND中有封装
3CWND类的m_wnd就是
4GetDlgItem (for dialog sub window)