WEB开发网
开发学院软件开发VC 系统理解Win32 API和MFC(下) 阅读

系统理解Win32 API和MFC(下)

 2006-07-20 11:36:31 来源:WEB开发网   
核心提示:二、MFC的概念模型前面我们研究了WIN32 API的“领域模型”,对它有较全面的认识,系统理解Win32 API和MFC(下),下面,对MFC概念模型的研究,负责提供缺省的消息处理,所以,我们把重点放在对app framework的研究上,app framework中的message响应/传递

二、MFC的概念模型

前面我们研究了WIN32 API的“领域模型”,对它有较全面的认识。下面,对MFC概念模型的研究,我们把重点放在对app framework的研究上。

app framework中的message响应/传递机制是最重要的。而Hook机制和Message响应/传递机制是密切相关的,后者以前者为基础。

1. Hook机制

也许有些程序员只知道hook机制可以编写很“牛”的应用,孰不知MFC本身也是依靠hook机制的。

从图中看到,每个hook拥有一个指针队列,每个指针指向一个称为的HookProc函数,HookProc将在合适的时机被OS调用执行。hook是分不同种类的,其实正是hook的种类决定了它什么时机被OS调用执行。提示,可以看一下“订阅-发布”设计模式以助理解。

2 MFC中Message响应函数的安装

2.1 回忆API中Message响应函数的安装

API中Message响应函数的安装,是由CreateWindow()实现的,它将window与一个windowClass联系起来,而后者中记录了Message响应函数的指针。

至于细节,看一下如何用Win32 SDK或Win16 SDK写程序就清楚了,其中 DefWindowProc()是API函数,负责提供缺省的消息处理,所以,程序员只需要handle需要特殊处理的消息。

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
      WNDCLASS wndclass;
      ...
      wndclass.lpfnWndProc =WndProc;
      wndclass.lpszClassName = szWindowClass;
      ...
      RegisterClass(&wndclass);
      hWnd = CreateWindow( szWindowClass, ...);
      ...
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
      switch(message)
      {
            ...
            return;
      }
      return DefWindowProc(hwnd,message,wParam,lParam);
}

2.2 MFC中Message响应函数的安装

1 2 3  下一页

Tags:系统 理解 Win

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