这个东西其实做个实验就可以知道.不过分析起来比较有意思.
CreateWindow Called
WM_CREATE
CreateWindow Return
Message Loop
在CreateWindow和Message Loop之间,可以调用相应的函数如ShowWindow, UpdateWindow.
其事件顺序是:
ShowWindow Called
WM_SIZE
ShowWindow Return
UpdateWindow Called
WM_PAINT
UpdateWindow Return
如果带有WS_VISIBLE的窗体,并不主动调用ShowWindow和UpdateWindow函数.则在Message Loop开始后,先调用 WM_SIZE,后调用WM_PAINT.
其实这些都很容易理解,不过使用的时候就有很多地方需要注意了.
比如我们经常将CreateWindow的返回值作为全局的变量.我们也会在WM_CREATE时调用一些初始化函数.
这些初始化函数需要的主窗口句柄就必须是WM_CREATE消息的,而不能是全局的那个.因为全局的那个还没有被正确地返回.
同样的道理.如果WM_SIZE和WM_PAINT都使用一些公共的变量,就要在WM_SIZE里面先准备好.也尽量不要主动调用WM_PAINT.否则难免出现变量混乱的局面.
Tuesday, January 27, 2009
Subscribe to:
Post Comments (Atom)
可视化基础代码示例,以帮助学习
ReplyDelete在visual basic中显示“打开方式”对话框