有那位大侠能给我讲一下vb程序的内部消息循环 有那位大侠能给我讲一下vb程序的内部消息循环从一个窗口的诞生,如何一步一步到窗口被绘画出来,进入消息循环,最后到处理W_QUIT消息而灭亡。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你自己在每个窗体事件里面写debug.print "Event name"然后单步运行,就知道了 楼主是搞MFC的?好烦啊,侯sir的深入浅出!!不过,VB有必要了解这些吗?呵呵,我不懂 程序先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把这些东西都进行了封装。 谢谢大侠我是想知道,vb程序是在那里进行类的注册和实例的生成在initialize事件产生的时候,已经完成了哪些操作在load时间产生的时候,又完成了哪些工作还有,它的消息循环是在那里处理的,如果我要自己处理某些消息,应该怎么办,为什么,谢谢注:我有win32api(C语言版)编程的基础 这可以采用钩子机制,自己做一个消息处理函数来处理windows消息 加上setwindowlong 和 getwindowlong Charles Petzold 那本书中好像第二章就讲的是这个 用sendmessage函数加上setwindowlong 和 getwindowlong 求助,我是菜鸟,实时错误3709 vbs的问题:能用vbs实现都线程吗? vb 类模块中如何释放自身(dll) StrConv 用vb连接远程的FTP服务器的问题 软件发布问题 在单步调试时控件能够正确获得焦点,运行时不能,为什么? 我有一段代码总是出现问题我找不到问题的根源 如何设定表格的固定行? 找出日期在2001年8月1日,到2001年9月3日的所有记录的sql语句怎么写的,用between不行吗 vb文件传送时用二进制从服务端传送图片到客户端时为什么客户端收到的图片不能预览 怎样取得目前Mouse在窗体中的位置,要是VB界面设计时的单位
然后单步运行,就知道了
好烦啊,侯sir的深入浅出!!
不过,VB有必要了解这些吗?
呵呵,我不懂
并存入模块句柄。
再创建窗口,并保存这个窗口的句柄。
与此同时,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把这些东西都进行了封装。
我是想知道,vb程序是在那里进行类的注册和实例的生成
在initialize事件产生的时候,已经完成了哪些操作
在load时间产生的时候,又完成了哪些工作
还有,它的消息循环是在那里处理的,如果我要自己处理某些消息,应该怎么办,为什么,谢谢
注:我有win32api(C语言版)编程的基础