`
fdyang
  • 浏览: 79656 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Windows 程序内部运行机制

阅读更多

Windows 程序内部运行机制

 

窗口与句柄(HANDLE)

- 在Windows 应用程序中窗口时通过窗口句柄(HWND)来标识的,对某个窗口进行操作.首先要得到这个窗口的句柄.

- 句柄(HANDLE)是WINDOWS程序中重要的概念,在Windows程序中,有各种各样的资源(窗口,图标,光标),系统在创建这些资源时会为它们分配内存,并返回标识这些资源的标识号,即句柄。例如图标句柄(HICON),光标句柄(HCURSOR),画刷句柄(HBRUSH).

 

消息与消息队列

- Windows程序设计是一种事件驱动方式的程序设计模式,主要是基于消息的。

- 在主窗口中,产生一个事件(例如按下鼠标),系统会产生WM_LBUTTONDOWN消息,并投递到应用程序的消息队列中,然后应用程序从消息队列中取出消息并进行响应(进行处理, 即调用窗口处理函数)。

 

- 消息是有MSG结构体来表示的.(参考MSDN)

 

typedef struct tagMSG{
	HWND hwnd;          //表示消息所处(关联)的窗口.
	UINT message;       //消息的标识符,例如宏 WM_KEYDOWN , WM_CHAR 等. 
	WPARAPM wParam,     //消息的第一个附件信息
	LPARAM lParam,      //消息的第二个附加信息
	DWORD time;         //消息投递到消息队列的时间
	POINT pt;   	    //鼠标当前位置
}MSG
  

- Windows 消息处理的机制为:

  1)操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中。

  2)应用程序在消息循环中调用GetMessage函数从消息队列中取出消息,并进行预处理。

     如放弃响应,或者调用TranslateMessage产生新的消息。

  3)应用程序调用DispatchMessage,将消息回传给操作系统。消息使用MSG结构体表示的。

  4)系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理。

 

 

Win32程序的实现步骤.

1. 定义WinMain函数. WinMain函数是windows程序的入口函数.

 

2. 创建一个窗口。

   1).设计一个窗口类. 

      - WNDCLASS

   2).注册窗口类.

      - ATOM RegisterClass(CONST WNDCLASS *lpWndClass); 

   3).创建窗口.

      - CreateWindow(..)

   4).显示和更新窗口.

      - 显示: 

 

BOOL ShowWindow(
                HWND hWnd,   // handle to window
                int nCmdShow // show state
              );
 

      - 更新:

BOOL UpdateWindow(
	        HWND hWnd   // handle to window
	      );

 

3. 进行消息循环。

   - 不断的从消息队列中取出消息,并进行响应

  
BOOL GetMessage(
  LPMSG lpMsg   // address of structure with message
  HWND hWnd,   // handle of window  接受属于哪个窗口的消息,通常设置为NULL,用于接受所有窗口消息。
  UINT wMsgFilterMin,  // first message 
  UINT wMsgFilterMax   // last message  wMsgFilterMin,wMsgFilterMax 都设为0,接受所有消息。
     }; 

      GetMessage 对于WM_QUIT消息,返回值为零,对于其他消息,返回值非零。出现错误时,返回值为-1.

   - 通常消息循环代码为:

MSG msg; 
     while(GetMessage(&msg,NULL,0,0){
     	TranslateMessage(&msg);   //将虚拟键消息转化为字符消息。
	DispatchMessage(&msg);   //分配一个消息到窗口过程,由窗口过程函数对消息进行处理.(响应)
     }

 

4. 编写窗口处理函数

   - 窗口函数的声明如下:

LRESULT CALLBACK WindowProc(
  	HWND hWnd,
	UINT uMsg,
 	WPARAM wParam, 
	LPARAM lParam,
     );
  

   - 显然,系统是通过窗口过程函数的地址(指针)来调用窗口过程函数。


 

分享到:
评论

相关推荐

    Windows程序内部运行机制 PDF

    Windows程序内部运行机制详细说明Windows窗口编程过程窗口的产生,以及各种句柄与窗口的对应关系

    Windows程序内部运行机制

    Windows程序内部运行机制,Windows程序内部运行机制,Windows程序内部运行机制

    windows程序内部运行机制

    讲解windows API,窗口类消息循环等

    C++详解MFCWindows程序内部运行机制

    要想熟练掌握 Windows 应用程序的开发,首先需要理解Windows 平台下程序运行的 内部机制。市面上很多介绍Visual C++开发的书籍...部运行机制,为读者扫清VC++学习路途中的第一个障碍,为进一步学习MFC 程序打下基 础。

    Windows程序内部运行机制实例详解

    本文以孙鑫老师VC++教程中的程序为基础,详细讲解了Windows程序内部运行机制,相信可以帮助大家更好的理解Windows程序运行原理及相应的VC++程序设计。具体内容如下: 创建一个Win32应用程序步骤: 1、编写WinMain...

    VC++深入详解,深入剖析Windows 程序的内部运行机制

    要想熟练掌握 Windows 应用程序的开发,首先需要理解Windows 平台下程序运行的 内部机制。市面上很多介绍Visual C++开发的书籍...部运行机制,为读者扫清VC++学习路途中的第一个障碍,为进一步学习MFC 程序打下基 础。

    MFC消息映射机制的剖析

    从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。本书不同于一般的讲述VC++使用...

    C++经典语法与应用 类的编写与应用

    从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。本书不同于一般的讲述VC++使用...

    VC++深入详解 PDF教程及示例代码.rar

    本书从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。 本书内容丰富、实用性强...

    《VC++深入讲解》扫描高清版

    、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。 本书内容丰富、实用性强,许多代码可以直接应用到工程...

    VC++深入详解 扫描版带书签 分卷1

     本书从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。  本书内容丰富、实用性...

    VC++深入详解 扫描版带书签 分卷2

     本书从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。  本书内容丰富、实用性...

    VC++深入详解(课件+源码)

     《VC++深入详解》从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。  《VC++...

    VC++深入详解.pdf

     《VC++深入详解》从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。  《VC++...

    Windows程序运行原理

    Windows内部运行原理,了解Windows内部运行机制,明确应用程序及操作系统之间的关系

    VC++深入详解

    从Windows程序内部运行机制讲起,由浅入深详细讲解VC++的方方面面。

    c++教学视频

    Windows程序内部运行机制 1.1 API与SDK 1.2 窗口与句柄 1.3 消息与消息队列

    vc++深入详解代码

    vc++深入详解代码,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架

    VC++深入详解教程

    从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单

Global site tag (gtag.js) - Google Analytics