在Visual Studio操作环境中的左侧有三个选项,它们包含应用程序的不同视图,FileView(文件视图),ClassView(类视图),ResourceView(资源视图).
窗口的创建:①、设计一个窗口类;②、注册窗口;③、创建窗口;④、显示及更新窗口
Windows程序的入口函数:WinMain函数
int WINAPI WinMain( //WinMain是由操作系统调用
HINSTANCE bInstance,//应用程序的实例句柄,指示当前句柄
HINSTANCE bPrevInstance,//指示先前句柄
LPSTR IpCmdLine,//字符串类型,相当于char *类型;
int nCmdSbow
);
句柄是资源的标识,按照资源的类型可以分为:图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE).
设计窗口类:
typedef struct_WNDCLASS{
UINT style;//相当于c语言中的unsigned int,无符号整形,style是指定类风格,例CS_VREDRAW: 当垂直长度改变或移动窗口时,重画整个窗口
WNDPROC lpfnWndProc;//指向窗口过程,也称为回调函数
int cbClsExtra;//指定紧随在WNDCLASS数据结构后分配的字节数,系统将其初始化为零
int cbWndExtra;//指定紧随在窗口实例之后分配的字节数,系统将其初始化为零
HANDLE hInstance;//标识了该窗口类的窗口过程所在的模块实例的句柄,不能为NULL
HICON hIcon;//标识了该窗口类的图标.hIcon字段必须是一个图标的句柄;若hIcon字段为NULL,则无论何时用户把应用程序缩至最小时,应用程序必须画一个图标
HCURSOR hCursor;//标识该窗口类的光标,它是一个光标资源的句柄,若hCursor字段为NULL,则无论何时鼠标移到应用程序窗口时,应用程序必须显式设置光标形状
HBRUSH hbrBackground;//标识了该窗口类的背景画笔。
LPCTSTR lpszMenuName;//指向NULL结束的字符串,该字符串描述菜单的资源名,如同在资源文件里显示的名字一样
LPCTSTR lpszClassName;// 指向NULL结束的字符串,或者是一个原型(atom)
}WNDCLASS;
窗口风格CS:
CS_BYTEALIGNCLIENT: 在字节边界上(在x方向上)定位窗口的用户区域的位置
CS_BYTEALIGNWINDOW: 在字节边界上(在x方向上)定位窗口的位置
CS_CLASSDC: 该窗口类的所有窗口实例都共享一个窗口类DC
CS_DBLCLKS: 允许向窗口发送双击鼠标键的消息
CS_GLOBALCLASS: 当调用CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的hInstance参数和注册窗口类时传递给RegisterClass 的 hInstance参数不同。如果不指定该风格,则这两个hInstance 必须相同。
CS_HREDRAW: 当水平长度改变或移动窗口时,重画整个窗口
CS_NOCLOSE: 禁止系统菜单的关闭选项
CS_OWNDC: 给予每个窗口实例它本身的DC。注意,尽管这样是很方便,但它必须慎重使用,因为每个DC大约要占800个字节的内存。
CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是从系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。