• Windows程序基础


    MSG结构具有如下形式:
    1
    typedef struct tagMSG { 2 HWND hwnd; 3 UINT message; 4 WPARAM wParam; 5 LPARAM lParam; 6 DWORD time; 7 POINT pt; 8 DWORD lPrivate; 9 } MSG, *PMSG, *NPMSG, *LPMSG;

     MSG结构中包含了线程的消息队列中的消息信息。

    hwnd 标识了接收的消息的窗口过程所属的窗口的句柄。
    message 指定了消息号。 WM_XXX
    wParam 指定了消息的附加信息。具体的含义与message成员的值有关。实际上为 unsigned int
    lParam 指定了消息的附加信息。具体的含义与message成员的值有关。实际上为 long
    time 指定了发出消息的时间。消息队列时间
    pt 指定了发出消息时光标位置的屏幕坐标。 当前鼠标位置

     

     

     

     

     

     

     

     

     

    1 int WINAPI WinMain(
    2     HINSTANCE hInstance,
    3     HINSTANCE hPrevInstance,
    4     LPSTR lpCmdLine,
    5     int nShowCmd
    6 );
    WINAPI 其实就是 __stdcall 即调用约定
    hInstance:表示改程序的当前运行的实例句柄。
    hPrevInstance:表示当前实例的前一个句柄。Win32环境下参数为NULL。
    lpCmdLine:是一个以空终止的字符串,指定传递给应用程序的命令行参数。 
    nShowCmd:指定程序的窗口应该如何显示。

    创建窗口的过程:
    1、设计一个窗口类
    2、注册窗口类
    3、创建窗口
    4、显示及更新窗口

    1、设计一个窗口类
    窗口特征WNDCLASS结构体:
     1 typedef struct _WNDCLASS 
     2 {
     3     UINT style;  ==》指定窗口的样式
     4     WNDPROC lpfnWndProc; ==》  lpfnWndProc 是一个函数指针,指向窗口过程函数,窗口过程函数是一个回调函数。
     5     int cbClsExtra; ==》 该参数没有使用,直接设置为0即可。
     6     int cbWndExtra;  ==》 该参数没有使用,直接设置为0即可。
     7     HANDLE hInstance;  ==》 hInstance 指向包含窗口过过程的程序的实例句柄。即WinMain里的句柄。
     8     HICON hIcon;  ==》 指定窗口类的图标句柄。如果加载的是系统的标准图标,那么第一个参数必须为NULL。
     9     HCURSOR hCursor; ==》和上面一样。
    10     HBRUSH hbrBackground;  ==》指定窗口类的背景画刷句柄。
    11     LPCTSTR lpszMenuName; ==》指定菜单资源的名字。
    12     LPCTSTR lpszClassName; ==》指定窗口类的名字。
    13 } WNDCLASS;
    2、注册窗口类
    设计完成后,需要调用RegisterClass进行注册,参数为创建窗口类对象的指针。

    3、创建窗口
     1 HWND CreateWindow(
     2     LPCTSTR lpClassName, ==》 指定窗口名称
     3     LPCTSTR lpWindowName, ==》指定窗口的名字。如果窗口样式指定了标题栏,那么窗口名字将会显示到标题栏上。
     4     DWORD dwStyle, ==》 指定创建窗口的样式。
     5     int x,
     6     int y,
     7     int nWidth,
     8     int nHeight,
     9     HWND hWndParent, ==》 指定被创建窗口的父窗口句柄。
    10     HMENU hMenu, ==》 指定窗口餐单的句柄
    11     HANDLE hInstance, ==》 指定窗口所属的应用程序实例的句柄。
    12     PVOID lpParam ==》 多数窗口设置为 NULL
    13 );
    4、显示及更新窗口
    (1)显示窗口
    1 BOOL ShowWindow( 
    2     HWND hWnd, 
    3     int nCmdShow ==》 指定窗口的显示状态 
    4 ); 

     (2)更新窗口

    1 BOOL UpdateWindow( 
    2     HWND hWnd
    3 ); 
     
     
  • 相关阅读:
    面向对象:范式与思想
    每个人都应该懂点函数式编程
    Lambda 表达式-即匿名函数----Lambda演算-即匿名函数的等价推演过程-- => define as
    Side effect (computer science)
    系统理论
    参量与变量、指针、函数、对象
    面向对象和结构化程序设计的区别X
    面向对象编程与面向过程编程的区别(翻译版)
    2015 Objective-C 新特性
    Comparison of programming paradigms
  • 原文地址:https://www.cnblogs.com/thismelongaotian/p/12558882.html
Copyright © 2020-2023  润新知