Form1.Handle是整个windows地址 

解决方案 »

  1.   

    窗口过程的地址是整个系统的,多个窗口可以对应一个窗口过程,窗口过程可以位于dll中
    象button等控件的窗口过程是位于dll中的,每创建一个窗口,系统就为这个窗口创建一个
    消息队列,当与这个窗口有关的消息发生时,系统便调用与 之相对应的窗口过程,并传递
    窗口句柄,和消息等相关参数,窗口过程处理完后,在返回给windows,在进行下一次处理
    具体我也不太清楚,呵呵
      

  2.   

    窗口函数是一个回调函数,由系统负责调用。Win32消息是一个32位整数,每个消息由唯一的数值表示并相当于某一个事件。每个消息伴随着两个相关值,一个是WPARAM类型,另一个是LPARAM类型(在Win32平台上,它们都是32位整型),由这两个值给出消息相关信息,其意义对于每个消息而言是不同的。
    窗口函数中包含一个庞大的switch语句,负责处理不同的系统消息,然后调用DefWindowProc()将收到的未处理消息传送给操作系统。
      

  3.   

    to xzgyb(回首往事,不堪回首) 
    如果窗口函数的地址是相对与整个系统的,那问什么在Spy++中看到的该地址是固定的?(在不同的运行时间)。还有窗口是没有消息队列的,创建该窗口的线程管理着消息队列。
      

  4.   

    他们说的都很对,不过我觉得你的问题三言两语说不清楚。你可以去看看候杰的《深入浅出MFC》有很详尽的介绍
      

  5.   

    欧,一般程序装载的虚拟地址空间是从$00400000开始的,可以改这个值,是不是与这有关我不太清楚,我看了看windows程序设计,消息队列你是对的,我长知识了,呵呵
      

  6.   

    1)该地址是相对与该Application的4G虚拟内存的。
    2)一个窗口函数地址在一个Application中是固定的。
    3)同一Application内,如果开多个相同窗口,这些窗口对应的窗口函数是同一地址。