none
如果我有一个窗口句柄,我如何能够通过程序获得指向这个窗口的指针? RRS feed

  • 问题

  • 句柄,是整个windows编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过句柄访问相应的对象的信息。

    为了对同一程序的多个副本进行管理,Windows还引入实例句柄。这就等于Windows为每个应用程序建立一张表,实例句柄就好象是这张表的一个索引。

    因为Windows的内存管理经常会将空闲对象的内存释放掉,当需要访问时再重新提交到物理内存,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。因此程序就将想访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能够知道程序想访问的对象的物理地址了。

    但是如果我有一个窗口句柄,我如何能够通过程序语句操作获得指向这个窗口的指针?


    ajian


    2014年6月21日 10:48

答案

全部回复

  • 这个窗口是内核对象,你无法获得其指针。所有窗口操作都应该通过句柄进行。


    Visual C++ MVP

    2014年6月21日 21:27
    版主
  • 不知道您想要的是不是 这个函数:

    Returns a pointer to a CWnd object when given a handle to a window. If
    a CWnd object is not attached to the handle, a temporary CWnd
    object is created and attached.

    static CWnd* PASCAL FromHandle(
     HWND hWnd 
    );

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年6月22日 2:26
    版主