常用的几个结构体定义


msg 结构体
在Windows程序中,消息是由MSG结构体来表示的。MSG结构体的定义如下(参见MSDN):
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
结构体中各 成员变量的含义如下:
第一个 成员变量hwnd表示消息所属的窗口。我们通常开发的程序都是窗口 应用程序,一个消息一般都是与某个窗口相关联的。例如,在某个 活动窗口中按下鼠标左键,产生的按键消息就是发给该窗口的。在Windows程序中,用HWND类型的 变量来标识窗口。
第二个 成员变量message指定了消息的 标识符。在Windows中,消息是由一个数值来表示的,不同的消息对应不同的数值。但是由于数值不便于记忆,所以Windows将消息对应的数值定义为WM_XXX宏(WM是Window Message的缩写)的形式,XXX对应某种消息的英文拼写的大写形式。例如,鼠标左键按下消息是 WM_LBUTTONDOWN,键盘按下消息是WM_KEYDOWN,字符消息是WM_CHAR,等等。在程序中我们通常都是以WM_XXX宏的形式来使用消息的。
提示:如果想知道WM_XXX消息对应的具体数值,可以在 Visual C++ 开发环境中选中WM_XXX,然后单击鼠标右键,在弹出菜单中选择goto definition,即可看到该宏的具体定义。跟踪或查看某个 变量的定义,都可以使用这个方法。
第三、第四个 成员变量wParam和lParam,用于指定消息的附加信息。例如,当我们收到一个 字符消息的时候,message 成员变量的值就是WM_CHAR,但用户到底输入的是什么字符,那么就由wParam和lParam来说明。wParam、lParam表示的信息随消息的不同而不同。如果想知道这两个 成员变量具体表示的信息,可以在MSDN中关于某个具体消息的说明文档查看到。读者可以在VC++的开发环境中通过goto definition查看一下WPARAM和LPARAM这两种类型的定义,可以发现这两种类型实际上就是unsigned int和long。
最后两个 变量分别表示消息投递到 消息队列中的时间和鼠标的当前位置。
========================================================
WNDCLASS        wndclass ;
        wndclass.style      = CS_HREDRAW | CS_VREDRAW ;//基于此窗口类创建的窗口风格
        wndclass.lpfnWndProc    = WndProc ;//指向窗口过程函数的指针
        wndclass.cbClsExtra        = 0 ;//窗口类结构的预留空间
        wndclass.cbWndExtra      = 0 ;//同上
        wndclass.hInstance          = hInstance ;//Windows程序的实例句柄,这是由编译器提供的
      //为所有基于这个窗口类建立的窗口设置一个图标
        wndclass.hIcon  = LoadIcon (NULL, IDI_APPLICATION) ;
        //为所有基于这个窗口类建立的窗口设置一个鼠标
      wndclass.hCursor            = LoadCursor (NULL, IDC_ARROW) ;
        //指定了基于这个窗口类创建的窗口背景颜色,用取得一个白色刷子的句柄来实现
      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
      //指定窗口类的菜单,用NULL赋值表示这个程序中没有菜单
    wndclass.lpszMenuName  = NULL ;
    //指定窗口类的名称
  wndclass.lpszClassName = szAppName ;
==================================================
hwnd = CreateWindow (szAppName,      // 窗口类的名称,基于这个窗口类创建窗口
                                    TEXT ("The Hello Program"), //窗口标题栏的名称
                                    WS_OVERLAPPEDWINDOW,  // 窗口的风格
                                    CW_USEDEFAULT,                //窗口位置的X坐标
                                    CW_USEDEFAULT,                //窗口位置的Y坐标
                                    CW_USEDEFAULT,                //窗口大小宽
                                    CW_USEDEFAULT,                //窗口大小高
                                    NULL,                                    // 父窗口的句柄
                                    NULL,                                    // 窗口菜单的句柄
                                    hInstance,                              // Windows应用程序的实例句柄
                                    NULL) ;              // 创建参数的指针,可以用它访问程序中的数据
========================================================

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值