zoukankan      html  css  js  c++  java
  • C++ MFC学习 (一)

    MFC:微软基础类库,以C++形式封装了WindowsAPI,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

          其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类

    MFC把Windows SDK API函数包装成了几百个类,给WIndows操作系统提供了面向对象的接口,支持可重用性、自包含性以及其他OPP原则。

    头文件

    #pragma once
    #include <afxwin.h>    //导入mfc头文件
    
    class MyApp :public CWinApp   //CWinApp应用程序类
    {
    public:
        //程序入口
        virtual BOOL InitInstance();
    
    };
    
    class MyFrame:public CFrameWnd  //窗口类框架
    {
    public:
        MyFrame();
    };

    源文件

    #include "mfc.h"
    
    MyApp app;  //全局应用程序对象,有且仅有一个
    
    BOOL MyApp::InitInstance() {
        //创建窗口
        MyFrame *frame = new MyFrame;
        frame->ShowWindow(SW_SHOWNORMAL);
        frame->UpdateWindow();
    
        m_pMainWnd = frame;        //m_pMainWnd 保存指向应用程序的主窗口的指针 
        return TRUE;
    }
    
    MyFrame::MyFrame() {
        Create(NULL,TEXT("Windows窗体"));
    }

    注意:对项目进行配置,配置为在共享DLL中使用

    MFC消息映射机制:

    消息映射是一个将消息和成员函数相互关联的表。比如,框架窗口接收到一个鼠标左击消息,MFC将搜索该窗口的消息映射,如果存在一个处理WM_LBUTTONDOWN消息的处理程序,然后就调用OnLButtonDown。

       消息映射机制:   需要先声明宏  在.h文件中声明

              需要分界宏     在.cpp中实现

              将消息宏  写到 分界宏 中间      在手册上去找消息对应的消息宏

              声明函数原型   在.h 中

              实现函数   如 鼠标消息,键盘,绘图等

    // 1.声明消息映射机制需要的宏   .h
        DECLARE_MESSAGE_MAP();//声明宏 提供消息映射机制
    
    //2. 在.cpp中  实现  分界宏   用来映射对应的消息
    BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
        ON_WM_LBUTTONDOWN()   //鼠标左键按下
        //ON_WM_KEYDOWN()       //键盘按下
        ON_WM_CHAR()          //键盘字符  按键按下 到松开
        ON_WM_PAINT()          //绘图
    END_MESSAGE_MAP()
    
    //3.声明函数
        afx_msg void OnLButtonDown(UINT, CPoint);   //鼠标按下消息声明
        afx_msg void OnKeyDown(UINT, UINT, UINT);    //键盘按下消息声明
        afx_msg void OnChar(UINT, UINT, UINT);
        afx_msg void OnPaint();                        //绘图消息声明
    
    //4. 实现函数
    void MyFrame::OnLButtonDown(UINT, CPoint point)
    {
        TCHAR buf[1024];
        wsprintf(buf, TEXT("x = %d,y = %d"), point.x, point.y);
    
        //MFC的字符串  CString
    
        MessageBox(buf);
    }
    
    void MyFrame::OnKeyDown(UINT, UINT, UINT)
    {
        MessageBox(TEXT("按下键盘"));
    }
    
    void MyFrame::OnChar(UINT nchar, UINT, UINT)
    {
        CString str;
        str.Format(TEXT("按下了%c键"), nchar);
        MessageBox(str);
    }
  • 相关阅读:
    笔试小题
    java泛型
    HTML 字符实体 &lt; &gt: &amp;等
    HttpClient Get/Post方式调用Http接口
    Webservice简介
    Mybtis框架总结(一)
    java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
    java程序员需要掌握些什么知识
    Float和double丢失精度问题及解决方案
    ViewController的viewWillLayoutSubviews作用
  • 原文地址:https://www.cnblogs.com/lg804721251/p/14312101.html
Copyright © 2011-2022 走看看