如题,经常一个窗口既然有一个hwnd,又有一个id,两者有何异动?
有一个不是就可以惟一标明了吗?何 来两个东东?

解决方案 »

  1.   

    问得有深度,呵呵。
    这个问题偶也没有研究清楚。
    不过我知道hwnd是唯一的,id大概就不一定唯一了。
    我记忆中,id主要用来发送通知消息的。
    例如,按钮被按下时,将向parent窗口发送wm_command消息,同时携带自己的id.
      

  2.   

    还有就是父窗口可以通过id取得子窗口的hwnd
    GetDlgItem
      

  3.   

    不仅是窗口,比如thread等很多东西都同时有handle和id.handle是不是指向某一块内存区域的指针?如果不是唯一的,那为何又叫id呢?
      

  4.   

    我觉得hwnd象一个全局变量,而id是一个局部变量。
      

  5.   

    handle在整个windows中是唯一的,而id在最小的范围内是唯一的handle可以直接在所有程序中应用,因为它是整个windows系统的资源。但id却只可以从最小范围内使用,它只属于最小范围内的资源。这也是API中大多数都有handle这样的参数,而从来没有id这样的参数,但类的成员函数就有此参数,比如GetDlgItem(id)大概可以这样理解,深层的含义不得而知
      

  6.   

    不太清楚,只知道handle范围大,ID范围小。
    关注高手回答!
      

  7.   

    我的理解是,Handle是为看不见的资源提供的ID,都是唯一标识资源的数据结构
      

  8.   

    handle一般内核对象,他需要系统创建。他的结构很复杂,通过handle可以找到窗口和其他。但ID不是内核对象,他只具有标示性。可以这样说,在系统里,没有两个一样的handle,但有可能ID一样(不同进程)。可以看一下windows核心编程
      

  9.   

    那handle是系统分配的吗?(随机?)
    id呢?也是吗?
      

  10.   

    我的理解:handle是对象的一个标识。
      

  11.   

    对窗口而言,handle确实是系统根据一定的算法分配的唯一标识符,窗口ID可以有程序自行指定,但对线程等其他对象则未必
      

  12.   

    由于窗口每次重新创建时handle的值是不同的,而ID的值则可以由程序指定,当窗口创建时后创建后,总是可以设定一个特定的ID,这也是在窗口消息中采用ID作为控件窗口的识别特征的原因
      

  13.   

    我也正晕着这个问题。那为什么要把ID转成名字呢?ID和ID名,有什么区别?象下面得用法:Create (NULL, _T ("My Application"), WS_OVERLAPPEDWINDOW,
        rectDefault, NULL, MAKEINTRESOURCE (IDR_MAINFRAME));
    还有ID的命名规范是什么?
    IDD_
    IDR_
    ...
      

  14.   

    窗口ID不同于其它的ID。比如说线程ID,它在系统范围内是唯一,可handle只在进程中唯一。
    但是窗口ID与handle刚好相反,它的handle在系统范围内是唯一,可ID只在窗口中就不一定是唯一。窗口handle表明可以对一个窗口资源进行相应的操作,相应的它由user32.dll进行管理。而ID分系统的ID和用户定义的ID,像IDC_STATIC等就是一个系统ID,在当前相同级别的窗口中它们都可以有此相同ID,但是当为用户ID时就需要是唯一性。基本上可以这么理解,ID是一个窗口自身的标识符,而handle是操作系统对窗口操作的标识符
      

  15.   

    handle是系统分配的!
    作为标识整个系统的资源用的!
     而id是可以由程序员自己给的——当然,也可以由编译器默认分配一个id!        有些窗口,是不会有id的(比如主窗口,顶端窗口),但不会有哪个窗口,是没有handle的!  id主要是由来控制子窗口的,最常见的,就是getdlgitem()之类的函数!
      

  16.   

    handle应是操作系统唯一标识,由系统分配内存指针,在整个操作系统包括其他应用程序,都可以通过handle访问。id则是项目里的标识,可以用户指定。
      

  17.   

    handle是系统分配的,全局标识
    ID是应用程序分配的,局部标识