因为windows要对你的程序进行管理。你的window是属于那个instance的。user32好分配消息给它。

解决方案 »

  1.   

    CreateWindow后,在USER32堆中产生一个结构,该结构中的一部分是从CreateWindow的参数得到,其中有INSTANCE,窗口类等等。
    系统中注册的好多窗口类,其中INSTANCE为NULL
      

  2.   

    同意Q-0的看法,windows程序基于窗口,系统要对其中每个运行的程序进行管理调度,句柄相当于一个程序的“把儿”,系统可以通过抓住这个把柄,将属于这个窗口的消息传给它。
    你还记得消息怎么分配的吗?
    while(GetMessage(&msg))
    {translatemessage(&msg);
    dispatchmessage(&msg);
    }
    上面这个函数就是程序实例的RUN()函数中的消息循环,你看到在分配消息时只有一个参数了吗?仅有消息msg,而没有明显指出他将被分配给谁。奥秘就是你所注册的窗口拥有实例句柄,系统可以找到他。