我的理解是CWnd*是MFC的, HWnd是SDK的, 就好像UINT和unsigned int`~~~~

解决方案 »

  1.   

    今天已经又一个这个问题了。再说一遍吧。
    HWND用来表示Windows对象,具体是指Windows窗口对象,是系统的一种对象。
    CWnd是用来表示C++类对象的,它用来封装Windows窗口对象,它又一个成员m_hWnd是用来保存Windows对象。
      

  2.   

    有了mfc,很多操作都由句柄变为了指针
    在编程的时候,可以体会到得到指针比得到句柄方便
      

  3.   

    一个是类的指针,一个是句柄。
    windows为了安全考虑,有些对象不让你随便改动,而在创建的时候给你一个句柄,让你透过句柄来进行操作。网上有一段话:
    举个通俗的例子,比如你考上了大学,入学后,学校(操作系统)会给你一个学生
    证号。注意,这个号码是学校指定的,你无法自选。有了这个号码(学生证,假设一证多用)
    享受学校提供的服务:如你就可以去图书馆借书,去食堂吃饭,去教室上课等等。但你不能
    到食堂里买啤酒,因为学校不允许这种服务。而在计算机中系统提供的服务就是API调用,
    你有了HANDLE,就可以理直气壮地向系统提出调用API的服务。
    而指针的权力就大多了,有了指针你可以到处去喝酒,打架,学校(操作系统)管不着,所以
    句柄和指针的区别在于句柄只能调用系统提供的服务。而句柄虽然是一个能相互区别的号码,
    但与我们普通的ID号又有区别,普通的ID号是可以由程序员自己定义的,而句柄不行,它是
    对象生成时系统指定的,是为了区别系统中存在的各个对象,这个句柄不是由程序员符给的,而是系统分配的。小糊涂仙补充一点,如果说句柄是学号的话,指针就是钱,嘿嘿,有了钱就可以到小卖部\食堂去买啤酒喝了.  在补充一点CWND类中有一个成员变量m_hwnd,就是一个句柄。