有那位大侠能给我讲一下vb程序的内部消息循环
从一个窗口的诞生,如何一步一步到窗口被绘画出来,进入消息循环,最后到处理W_QUIT消息而灭亡。
谢谢!

解决方案 »

  1.   

    你自己在每个窗体事件里面写debug.print "Event name"
    然后单步运行,就知道了
      

  2.   

    楼主是搞MFC的?
    好烦啊,侯sir的深入浅出!!
    不过,VB有必要了解这些吗?
    呵呵,我不懂
      

  3.   

    程序先GetModuleHandley用来为程序(一个程序假定只有一个窗口)声请一个内存模块
    并存入模块句柄。
         再创建窗口,并保存这个窗口的句柄。
         与此同时,windows为进程的每个线程维护一个消息队列。
        我们的程序只有一个窗口(就当只有一个线程)
        并用
        while ture
             GetMessage,addr @stMsg,NULL,0,0
             得到消息的函数
        loop
        进行消息循环
        消息结构        hWnd,uMsg,wParam,lParam
        windows向窗口发送WM_INIT时,窗口执行建立的代码。
        当执行每一种操作时,windows回向窗口发送不同的消息。窗口执行不同的代码。
       发送WM_quit时,windows就执行DestroyWindow,hWinMain(窗口句柄),销毁窗口。
       并向窗口的消息循环发出消息。
       如果没有发送WM_QUIT而执行DestroyWindow的话,消息循环就不会退出。
       在VB里面时看不到这些机制的,应为VB把这些东西都进行了封装。
      

  4.   

    谢谢大侠
    我是想知道,vb程序是在那里进行类的注册和实例的生成
    在initialize事件产生的时候,已经完成了哪些操作
    在load时间产生的时候,又完成了哪些工作
    还有,它的消息循环是在那里处理的,如果我要自己处理某些消息,应该怎么办,为什么,谢谢
    注:我有win32api(C语言版)编程的基础
      

  5.   

    这可以采用钩子机制,自己做一个消息处理函数来处理windows消息
      

  6.   

    加上setwindowlong 和 getwindowlong
      

  7.   

    Charles Petzold 那本书中好像第二章就讲的是这个
      

  8.   

    用sendmessage函数加上setwindowlong 和 getwindowlong