孙鑫Visual C++视频学习总结LESSON1.doc
文本预览下载声明
LESSON 1 WINDOWS程序内部运行原理
操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API
消息机制
操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
句柄HWND
操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。
消息message
Windows消息一般以WM_开头,例如WM_KEYDOWN
WPARAM、LPARAM
指定消息的附加信息,比如说按键消息中按下键的ASCII值就存放在WPARAM中
time
表示消息投递时候的时间
POINT
typedef struct tagPOINT {
LONG x;
LONG y;
} POINT, *PPOINT;
当消息投递的时候,光标在屏幕上面的位置
WinMain函数
windows程序的入口函数
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
HINSTANCE
实例,例如当你运行一个窗口,这个窗口就是一个实例
lpCmdLine
命令行参数,例如DOS下输入命令notepad 1.txt,1.txt就是命令行参数
nCmdLine
指定程序窗口显示状态:最大化、最小化等
创建一个完整的窗口的步骤:
窗口类的设计
typedef struct _WNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
style
窗口的样式,比如水平重画和垂直重画
WNDPROC
指定了这一类型窗口的过程函数,也称为回调函数。回调函数的原理是这样的,当应用程序收到给某一窗口的消息时,就应该调用某一函数来处理这条消息。这一调用过程不用应用程序自己来实施,而由操作系统来完成,但是,回调函数本身的代码必须由应用程序自己完成。对于一条消息,操作系统到底调用应用程序中的哪个函数(回调函数)来处理呢?操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数。每一种不同类型的窗口都有自己专用的回调函数,该函数就是通过lpfnWndProc成员指定的。
cbClsExtra
为每一个类指定一定字节数的附加内存空间,一般设为0
cbWndExtra
为每一个窗口指定一定字节数的附加内存空间,一般设为0
HINSTANCE
当前程序实例号
HICON
图标句柄,赋值:
HICON LoadIcon(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpIconName // name string or resource identifier
);
若是使用windows标准
显示全部