WEB开发网
开发学院软件开发VC MFC教程(5)-- MFC对象的创建(2) 阅读

MFC教程(5)-- MFC对象的创建(2)

 2010-03-25 20:33:44 来源:WEB开发网   
核心提示:视的初始化第六步,在边框窗口初始化之后,MFC教程(5)-- MFC对象的创建(2)(5),初始化视,如图5-14所示,从这里可以看出:只有顶层的主边框窗口能处理WM_ACTIVE消息,事实上,视、工具条窗口处理消息WM_INITAILUPDATE(MFC内部消息),完成初始化

视的初始化

第六步,在边框窗口初始化之后,初始化视。

如图5-14所示,视、工具条窗口处理消息WM_INITAILUPDATE(MFC内部消息),完成初始化。这里只讨论视的消息处理函数,其原型如下:

void CView::OnInitialUpdate()

图5-14对该函数的注释说明了该函数的特殊之处。其缺省实现是调用OnUpdate(NULL, 0, NULL)更新视。可以覆盖OnInitialUpdate实现自己的初始化。

OnUpdate是一个虚拟函数,其原型如下:

void CView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)

其中:

参数1指向修改文档数据的视;若更新所有的视,设为NULL;

参数2是一个包含了修改信息的long型变量;

参数3指向一个包含修改信息的对象(从CObject派生的对象)。

参数2、参数3是在文档更新对应视的时候传递过来的。

该函数用来更新显示视窗口,反映文档的变化,在MFC中,它为函数CView::OnInitialUpdate和CDocument::UpdateAllViews所调用。其缺省实现是使整个客户区无效。在下一次收到WM_PAINT消息时,重绘无效区。

工具条的初始化见讨论第13章。

激活边框窗口(处理WM_ACTIVE)

第七步,在窗口初始化完成之后,激活并显示出来。

下面讨论边框窗口激活时的处理(对WM_ACTIVE的处理)。

WM_ACTIVE的消息参数

wParam的低阶word指示窗口是被激活还是失去激活:WA_ACTIVE,被鼠标点击以外的方法激活;WA_CLICKACTIVE,由鼠标点击激活;WA_INACTIVE,失去激活;

wParam的高阶word指示窗口是否被最小化;非零表示最小化;

lPararm表示将激活的窗口句柄(WA_INACTIVE),或者将失去激活的窗口句柄(WA_CLICKACTIVE、WA_ACTIVE)。

在标准Windows消息处理的章节中,曾指出处理WM_ACTIVE消息时,先要调用一个函数_AfxHandleActivate,此函数的原型如下:

static void AFXAPI _AfxHandleActivate(CWnd* pWnd,

WPARAM nState,CWnd* pWndOther)

其中:

参数1是接收消息的窗口;

参数2是窗口状态,为WM_ACTIVE的消息参数wParam;

参数3是WM_ACTIVE的消息参数lParam表示的窗口。

_AfxHandleActivate是MFC内部使用的函数,声明和实现均在WinCore.CPP文件中。实现如下:

如果pWnd指向的窗口不是子窗口,而且pWnd和pWndOther窗口的顶级父窗口(TopLevelParent)不是同一窗口,则发送MFC定义的消息WM_ACTIVATETOPLEVEL给pWnd的顶级窗口,消息参数wParam是nState,消息参数lParam指向一个长度为二的数组,数组里存放pWnd和pWndOther所指窗口的句柄。否则,_AfxHandleActivate不作什么。

从这里可以看出:只有顶层的主边框窗口能处理WM_ACTIVE消息,事实上,Windows系统只会给顶层的非子窗口发送WM_ACTIVE消息。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:MFC 教程 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接