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);
}

C++ MFC学习 (一)的更多相关文章

  1. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  2. MFC学习笔记1---准备工作

    什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...

  3. MFC 学习笔记

    MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...

  4. MFC学习笔记(一)

    个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...

  5. MFC学习-第一课 MFC运行机制

    最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...

  6. 初识MFC学习——Hello World

    MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...

  7. 我的MFC学习之路(一)

    因为项目需求,我开始应用MFC写程序.具体接触MFC的时间大概也有两个月了.现在的水平算是刚刚踏入了MFC大门的半只脚.目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围 ...

  8. MFC学习指南大纲

    最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.

  9. 【MFC学习笔记-作业7-小型画图软件】【】

    作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.n ...

  10. MFC学习问题总结

    1.学习MFC添加位图,无法获取其ID 1).点击视图->其他窗口->资源视图,你会发现“无法在此窗口显示”,找到resource.h文件,关闭即可重新走一遍上面的过程就会发现可以打开了. ...

随机推荐

  1. JVM面试大总结

    一.汇总 JVM是运行在操作系统之上的,它与硬件没有直接的交互.先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享的有堆.方法区,线程私 ...

  2. python进阶之路13 二分法 三元表达式 各种生成式 匿名函数

    算法简介及二分法 1.什么是算法 算法就是解决问题的有效方法 不是所有的算法都很高效也有不合格的算法 2.算法应用场景 推荐算法(抖音视频推送 淘宝商品推送) 成像算法(AI相关)...... 几乎涵 ...

  3. iOS如何实现自动化打包

    iOS如何实现自动化打包 前言 在我们的日常开发工作中,避免不了会出现这样的场景:需求迭代开发完成之后,需要提供ipa包给QA同学进行测试,一般会执行如下流程:1.执行Git Pull命令,拉最新的代 ...

  4. C Primer Plus 5.11 編程練習

    /*C Primer Plus (5.10) 9*/ 1 #include<stdio.h> 2 #define G 103 3 int main() 4 { 5 char ch=96; ...

  5. Object类中wait带参方法和notifyAll方法-线程间通信

    Object类中wait带参方法和notifyAll方法 void wait (在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待.void wait  (lo ...

  6. .Net6 微服务之Polly入门看这篇就够了

    前言 O(∩_∩)O 大家好!书接上文,本文将会继续建立在 .Net6 使用 Ocelot + Consul 看这篇就够了 项目的基础上进行Polly的介绍,然后这篇文章只是个人学习与分享,不喜勿喷, ...

  7. 微信小程序搜索优化指南(SEO)

    前言 其实在 2019 年上半年,微信就发布了基于小程序页面的搜索. 为了更好地发现及理解小程序的页面,结合过去一段时间来我们遇到的各种情况,强烈建议各位开发者花一些宝贵的时间认真阅读本文. 小程序爬 ...

  8. html 引入 js 代码的几种方式

    一.普通加载 <script src="./abc.js"></script> 二.内嵌 <script> JavaScript 代码 < ...

  9. wsl 更新到D盘

    更换教程 https://blog.csdn.net/qq_39683682/article/details/113801632 安装后需要换个默认用户 https://blog.csdn.net/q ...

  10. Tengine01

    1 简介 Tengine是nginx的一个版本 Tengine文档:http://tengine.taobao.org/ nginx官网: http://nginx.org Nginx (" ...