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);
}
C++ MFC学习 (一)的更多相关文章
- MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
- MFC学习笔记1---准备工作
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- MFC学习笔记(一)
个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...
- MFC学习-第一课 MFC运行机制
最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...
- 初识MFC学习——Hello World
MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...
- 我的MFC学习之路(一)
因为项目需求,我开始应用MFC写程序.具体接触MFC的时间大概也有两个月了.现在的水平算是刚刚踏入了MFC大门的半只脚.目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围 ...
- MFC学习指南大纲
最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.
- 【MFC学习笔记-作业7-小型画图软件】【】
作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.n ...
- MFC学习问题总结
1.学习MFC添加位图,无法获取其ID 1).点击视图->其他窗口->资源视图,你会发现“无法在此窗口显示”,找到resource.h文件,关闭即可重新走一遍上面的过程就会发现可以打开了. ...
随机推荐
- 从Spring中学到的【2】--容器类
容器类 我们在实际编码中,常常会遇到各种容器类,他们有时叫做POJO,有时又叫做DTO,VO, DO等,这些类只具有容器的作用,具有完全的get,set方法,作为信息载体,作数据传输用. 其实,很多地 ...
- Redis RDB 与AOF
参考书籍<Redis设计与实现> 一丶为什么redis需要持久化 redis 作为一个内存数据库,如果不想办法将存储在内存中的数据,保存到磁盘中,那么一旦服务器进程退出,那么redis数据 ...
- 快速排序——C++左闭右开区间实现
代码 #include<iostream> #include<vector> using namespace std; class Solution { public: //快 ...
- AtCoder Regular Contest 148 B - dp
题面 For a string \(T\) of length \(L\) consisting of d and p, let \(f(T)\) be \(T\) rotated \(180\) d ...
- 基于 VScode 搭建 Qt 运行环境
插件 C/C++ Qt tools Qt Configure CMake CMake Tools 下载 qt https://download.qt.io/official_releases/onli ...
- 【实战】yolov8 tensorrt模型加速部署
[实战]yolov8 tensorrt模型加速部署 TensorRT-Alpha基于tensorrt+cuda c++实现模型end2end的gpu加速,支持win10.linux,在2023年已经更 ...
- 02安装一个最小化的Hadoop
安装一个最小化的Hadoop 为了学习HDFS和之后的MapReduce,我们需要安装一个Hadoop. Hadoop一共有3种运行模式 独立模式:不启动守护进程,所有程序运行在一个JVM进程中.独立 ...
- 网络爬虫及openyxl模块
网络爬虫及openyxl模块 一.第三方模块简介 1.第三方模块的用处 python之所以在这么多的编程语言中脱颖而出的优点是有众多的第三方库函数,可以更高效率的实现开发 2.第三方模块的使用 1.第 ...
- java 入门与进阶P-6.3+P-6.4
包裹类型 对于基本数据类型,Java提供了对应的包裹(wrap)类型.这些包裹类型将一个基本数据类型的数据转换成对象的形式,从而使得它们可以像对象一样参与运算和传递.下表列出了基本数据类型所对应的包裹 ...
- 【Oculus Interaction SDK】(一)设置 VR 相机与控制器 && 实现简单的抓取功能
前言 前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了.本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发.当然,不排除我文章刚写完 SDK 又变 ...