MFC学习笔记(2)

看了孙鑫老师的视频,对vc++的一些概念有所了解。

 

以下 是第一课时的笔记:

 

关于消息,是用以下的数据结构来实现的:

 

typedef struct tagMSG {

    HWND   hwnd;

    UINT   message;

    WPARAM wParam;

    LPARAM lParam;

    DWORD  time;

    POINT  pt;

} MSG, *PMSG;

 

 

HWND   hwnd;

窗口句柄

 

UINT   message;

 

表示消息类型,用宏表示,以wM_开头,例如MK_CONTROL   表示 ctrl 键被按下。

 

WPARAM wParam;

LPARAM lParam;  

都是整数,代表关于该消息的附加信息。

 

例如WM_CHAR代表用户按下的事件,但是用户按下时系统并不知道哪一个键(AB还是其他?)被按下了。于是就要把这些信息保存在附加信息中。

 

例如:

WM_CHARMSDN中:的定义:

 

LRESULT CALLBACK WindowProc(

  HWND hwnd,       // handle to window

  UINT uMsg,       // WM_CHAR

  WPARAM wParam,   // character code (TCHAR)

  LPARAM lParam    // key data

);

 

就是有WPARAM的参数来标识哪个ASCII码被按下。

 

(写程序的习惯:用变量类型来决定变量的用途。)

 

DWORD  time;

Double word 双十六位的数,即三十二位。

 

对每一个应用程序,操作系统都会对其建立一个消息队列,即一个先进先出的缓冲区

 

 

 

WinMain 函数

 

int WINAPI WinMain(

  HINSTANCE hInstance,      // handle to current instance

  HINSTANCE hPrevInstance,  // handle to previous instance

  LPSTR lpCmdLine,          // command line

  int nCmdShow              // show state

);

 

  LPSTR lpCmdLine,         lp表示一个长指针,LPSTR指向字符串首地址的指针,用于接收命令行参数。

 

问题:多个参考怎么办?

 

该函数由操作系统去调用,并不是我们去调用。

 

 

 

设计窗口类:

 

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的值一些说明:可以用 or (|) 运算符把不同的style连接起来。

 

CS_HREDRAW | CS_VREDRAW 水平大小变化时,窗口重画。

 

 

lpfnWndProc 回调函数:它可以赋值一个函数指针。

 

当收到某一消息时,操作系统会自动调用某个函数来处理消息。我们只需把这个函数注册到操作系统里。

 

这个函数需要自己写。

 

 

  int        cbClsExtra; 类的附加内存。系统自动赋予的。由属于这个窗口类的所有类所共享。

 

   int        cbWndExtra; 窗口附加内存。

 

HINSTANCE  hInstance; 代表我们的应用程序当前实例号。可以通过winMain 的形参进行赋值。

 

HICON      hIcon; 以用loadicon来对 该成员进行赋值。

函数:HICON LoadIcon(

  HINSTANCE hInstance, // handle to application instance

  LPCTSTR lpIconName   // name string or resource identifier

);

 

微软给我们设定了一些标准图标,如果我们要使用这些标准备图标,就可以把第一个参数hInstance设为NULL

 

可以用createIcon()来创建图标。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值