none
新手提问题,大家不要笑哈~~多谢解答了 RRS feed

  • 问题

  • 我用的是VS2008,学习API SDK windows编程。问题如下:

    1.一个窗口过程对应一个窗口类还是一个窗口吗?比如我注册一个窗口类,并用CreatWindow()函数创建一个窗口,那我的窗口过程对应的是我那个窗口类还是我建的那个窗口?

    2.为什么建窗口先要注册窗口类?为什么不像建对话框一样直接调用DialogBox(...,...,...,DialogProc)函数然后再编写DialogProc窗口过程就可以?

    3.为什么书上说窗口过程是由windows调用而不是我的主函数调用?

    我是一边网上看一边看《windows程序设计》,声旁没人可问,只能求大家解惑了哈。

     

    2010年11月23日 7:22

答案

  • 1.一般来说,一个窗口过程对应的是它的窗口类,也就是说,创建的窗口都是使用它的窗口过程。窗口是基于窗口类创建的,后者是规定了处理消息的窗口过程。照此说法:“用CreatWindow()函数创建一个窗口,那我的窗口过程对应的是我那个窗口类还是我建的那个窗口?”按位入座就可以了。
    2.不注册,你怎么知道窗口是什么样子的呢,好比你做一条裤子,你不让人量量,怎么知道你要的长度与宽度?专业的来说是因为CallBack。如果直接DialogProc,那么,函数过程如何做?它发的消息要发到哪儿去?如何找到你的Application?
    3.你需要理解:什么是窗口过程。所谓的窗口过程就是windows发消息给Application。也就是说,窗口过程是给windows进行Callback的。此过程还必须遵守一定规定。否则,什么时候出错了都不知道。


    Keep it simple
    2010年11月24日 1:46

全部回复

  • 1.一般来说,一个窗口过程对应的是它的窗口类,也就是说,创建的窗口都是使用它的窗口过程。窗口是基于窗口类创建的,后者是规定了处理消息的窗口过程。照此说法:“用CreatWindow()函数创建一个窗口,那我的窗口过程对应的是我那个窗口类还是我建的那个窗口?”按位入座就可以了。
    2.不注册,你怎么知道窗口是什么样子的呢,好比你做一条裤子,你不让人量量,怎么知道你要的长度与宽度?专业的来说是因为CallBack。如果直接DialogProc,那么,函数过程如何做?它发的消息要发到哪儿去?如何找到你的Application?
    3.你需要理解:什么是窗口过程。所谓的窗口过程就是windows发消息给Application。也就是说,窗口过程是给windows进行Callback的。此过程还必须遵守一定规定。否则,什么时候出错了都不知道。


    Keep it simple
    2010年11月24日 1:46
  • 嗯,虽然还不是很了解,但清楚了一些了,感谢了
    2010年11月24日 5:02