vc++学习笔记 one-day Win消息机制、SDK编程基础

第一天:Win消息机制、SDK编程基础
一、基本概念
SDK:软件开发工具包 software development kit
JDK:Java开发工具包
IDE:集成开发环境 Integrated Development Environment VS QT
API:应用程序接口 Application Programming Interface
WINAPI:Windows平台下的系统调用 windows.h,调用系统提供的特殊接口,得到系统的资源
窗口:父窗口和子窗口,客户区和非客户区
句柄:结构体类型,窗口句柄HWND,图标句柄HICO
消息队列:
消息:
窗口过程函数:

消息映射:


main()
WinMain()//WINAPI 入口地址

命令行参数:命令行中给定的参数,又称位置参数

多行注释的快捷键:先ctrl+k,再ctrl+c
取消注释的快捷键:先ctrl+k,再ctrl+u

二、winAPI窗口程序
1、定义入口函数WinMain()
2、创建一个窗口
    a)设计窗口类WNDCLASS(给成员变量赋值)
    b)注册窗口类(为了告诉操作系统调用哪个函数处理,告诉入口地址)
    c)创建窗口类
    d)显示和更新窗口
3、消息循环(通过鼠标、键盘对窗口操作,用到消息队列的处理)
4、窗口过程函数(对消息队列的处理)
 

MSDN(Microsoft Developer Network):winAPI,MFC(Microsoft Foundation Classes微软基础类库)
MFC参考文档(中文)

三、一个MFC程序(纯代码)
1)应用程序类 CWinApp
2)框架类  CFrameWnd

class MyApp:public CWinApp
{
public:
        virtual BOOL InitInstance();
private:
};

class MyFrame:public CFrameWnd
{
public:
    MyFrame();
private:
};
1)有且只有一个应用程序类对象
2)在程序入口函数实现功能 InitInstance()
   A)给框架类MyFrame对象动态分配空间(自动调用它的构造函数)
      a)框架类MyFrame对象构造函数里创建窗口 CWnd::Create
   B)框架类对象显示窗口 CWnd::ShowWindow
   C)框架类对象更新窗口 CWnd::UpdateWindow
   D)保存框架类对象指针 CWinThread::m_pMainWnd
事件处理:
消息映射:
   1、所操作类中,声明消息映射宏
        DECLARE_MESSAGE_MAP()
   2、对应的.cpp定义宏
        BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
            ON_WM_LBUTTONDOWN()//如果点击鼠标左键,做处理
        END_MESSAGE_MAP()
   3、对应类中,消息处理函数的声明
        afx_msg void OnLButtonDown(UINT, CPoint);      
   4、对应.cpp 消息处理函数的定义
        void MyFrame::OnLButtonDown(UINT, CPoint)


四、根据向导创建工程
1、文档视图结构
文档Doc:它是一个类,专门存储数据
视图View:它是一个类,专门显示和修改数据,直接表面能看到的在这里写,比如画图
框架类Frame:一个容器,装了视图,一般菜单栏在这里写
应用程序类 App:控制流程的

2、几个作比较重要的函数
  应用程序类CWinApp: InitInstance() 应用程序入口地址
  框架类CFrameWnd:PreCreateWindow(CREATESTRUCT& cs) //创建窗口前调用
          OnCreate(LPCREATESTRUCT lpCreateStruct) //创建窗口后,触发WM_CREATE,它是WM_CREATE消息的处理函数
  视图类CView:OnDraw(CDC* pDC)//绘图
          WM_PAINT 消息处理函数 OnPaint(),内部调用OnDraw(),两个函数都存在时,只有OnPaint()起作用

3、事件的添加和删除 
    a)框架和视图的区别
        选择所需类——>右击——>属性——>消息 ——>WM_LBUTTONDOWN ——>ADD
         
        框架相当于容器,容器装了 视图,视图相当于壁纸


五、字符集
ANSI标准的 多字节,单字节
char p[]="asddddfa";//一个字符一个字节

unicode宽字节,一个字符2个字节
TCHAR *p=L"abc"//一个字符2字节
wcslen(p)


MFC:
TCHAR:自动适应字节(条件编译),通过改变程序属性里面的“字符集”就能自适应是宽字节还是多字节

TEXT()
_T()


六、拓展
afx_xxxx:全局函数,不属于某个类特有,比如MessageBox()直接使用就可

xxxEX 、xxxW,拓展函数,比如TextOut和TextOutW用法是一样的

MFC命名规则:
类名和函数名:单词首字母大写
形参:类似 isFlag、isPressTest
成员变量:m_xxxx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值