返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >VS2019如何实现C++的MFC程序
  • 506
分享到

VS2019如何实现C++的MFC程序

2023-06-15 10:06:50 506人浏览 薄情痞子
摘要

这篇文章主要介绍了VS2019如何实现c++的MFC程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、创建项目然后点下一步,配置项目,这里我命名的是myfisrtmfc点

这篇文章主要介绍了VS2019如何实现c++的MFC程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、创建项目

VS2019如何实现C++的MFC程序

然后点下一步,配置项目,这里我命名的是myfisrtmfc

VS2019如何实现C++的MFC程序

点击创建按钮,然后弹出下面的对话框。

VS2019如何实现C++的MFC程序

对上面的MFC应用程序进行配置,如下:

VS2019如何实现C++的MFC程序

点击完成,生成如下界面。

VS2019如何实现C++的MFC程序

第一次编译生成的默认项目,之后得到下面的界面

VS2019如何实现C++的MFC程序

点击VS2019的界面,“解决方案资源管理器”

VS2019如何实现C++的MFC程序

到这里,项目建成,并且编译通过。

二、添加自定义的功能(以比较通用的画图为例)

点击资源视图,这里的控件将是后面需要操作的。

VS2019如何实现C++的MFC程序

双击IDR_MaiNFRAME,可以在这里面添加画图功能。

VS2019如何实现C++的MFC程序

也可以在Ribbon里面添加画图功能

VS2019如何实现C++的MFC程序

然后点击工具箱->RIbbon编辑器:

VS2019如何实现C++的MFC程序

双击Ribbon下的面板控件

VS2019如何实现C++的MFC程序

修改名称为形状,并添加一个按钮控件,修改名字为矩形

VS2019如何实现C++的MFC程序

修改矩形的杂项,ID改为ID_RECTANGLE

VS2019如何实现C++的MFC程序

右键矩形按键,选择添加事件处理程序

VS2019如何实现C++的MFC程序

得到如下弹窗

VS2019如何实现C++的MFC程序

配置这个弹窗如下:

VS2019如何实现C++的MFC程序

点击确定后,我们得到下面的代码

以下内容参考https://www.yisu.com/article/214347.htm

第一次使用c++,mfc很多函数都不熟悉,就直接套用了。

这里我们新建一个graph.cpp源文件

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

#include "framework.h"#include "pch.h" IMPLEMENT_SERIAL(graph, CObject, 1)graph::graph(int l, int u, int r, int d){    left = l;    up = u;    right = r;    down = d;    state = 0;    fcolor = 0xffffff;} void graph::Offset(int cx, int cy){    left += cx;    right += cx;    up += cy;    down += cy;} void graph::onPress(int x, int y){    sx = x; sy = y;    state = 0;    //选中图形    if (left < x && x < right &&        up < y && y < down) {        state = 1;        return;    }    if (left - f_width / 2 < x && x < left + f_width / 2)    state |= 2;    //    选中左边    if (up - f_width / 2 < y && y < up + f_width / 2)    state |= 4;//选中上边    if (right - f_width / 2 < x && x < right + f_width / 2)    state |= 8;//选中右边    if (down - f_width / 2 < y && y < down + f_width / 2)    state |= 16;    //    选中下边 } void graph::onRelease(int x, int y){    state = 0;}  void graph::SetBorderColor(int color){    fcolor = color;} void graph::SetFillColor(int color){    bcolor = color;}int graph::onMove(int x, int y){    int cx, cy;    cx = x - sx; cy = y - sy;    sx = x; sy = y;     if (state == 1) {        Offset(cx, cy);        //  位移量cx,cy    }     if (2 == (state & 2)) {        left = x;     }     if (4 == (state & 4)) {        up = y;     }     if (8 == (state & 8)) {        right = x;     }     if (16 == (state & 16)) {        down = y;     }    return state == 0 ? 0 : 1;}void graph::Serialize(CArcHive& ar){    CObject::Serialize(ar);    if (ar.IsLoading()) {        ar >> left >> right >> up >> down >> f_width >> fcolor >> bcolor;    }    else    {        ar << left << right << up << down << f_width << fcolor << bcolor;    }}graph::~graph(){}void graph::onDraw(CDC* pDC) {    CBrush b(fcolor);    pDC->SelectObject(&b);    CRect r(left, up, right, down);    pDC->FillRect(&r, &b);    CPen p(PS_SOLID, 1, bcolor);    pDC->SelectObject(&p);    pDC->Rectangle(left, up, right, down);    pDC->MoveTo(left, up);    pDC->DrawText(_T("空图形"), -1, new CRect(left, up, right, down), DT_CENTER | DT_VCENTER | DT_SINGLELINE);}

在项目中添加头文件graphz.h

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

在graph.h中添加下面的代码:

#pragma once class graph :public CObject{protected://边框DECLARE_SERIAL(graph)int left, up, right, down;//选中状态unsigned int state;int sx, sy;int  f_width = 5;int fcolor = 0xffffff, bcolor = 0; public:graph() :graph(50, 50, 100, 100) { }graph(int l, int u, int r, int d);void Offset(int cx, int cy);void  onPress(int x, int y);//  鼠标按下int  onMove(int cx, int cy);//  鼠标移动void  onRelease(int x, int y);//  鼠标释放virtual void onDraw(CDC* pDC);virtual int getGraphID() { return 0; }virtual void Serialize(CArchive& ar);void SetFillColor(int color);void SetBorderColor(int color);~graph(); };

在framework.h中添加graph.h

#include "graph.h"

我们要画矩形,这里添加矩形的相关代码,

跟上面的步骤一样,见一个rectangle.h和rectangle.cpp

rectangle.cpp

#include "framework.h"#include "pch.h"rectangle::rectangle(int l, int u, int r, int d) :graph(l, u, r, d){    state = 0;    fcolor = 0xffffff; } void rectangle::onDraw(CDC* pDC){    CBrush b(fcolor);    pDC->SelectObject(&b);    CRect r(left, up, right, down);    pDC->FillRect(&r, &b);    CPen p(PS_SOLID, 1, bcolor);    pDC->SelectObject(&p);    pDC->Rectangle(left, up, right, down);    pDC->MoveTo(left, up);} rectangle::~rectangle(){}

rectangle.h

#include "graph.h"class rectangle :    public graph{public:    //DECLARE_SERIAL(graph)    //void Serialize(CArchive& ar);    rectangle() :graph(50, 50, 100, 100) {}    rectangle(int l, int u, int r, int d);    void onDraw(CDC* pDC);    int getGraphID() { return 2; }    ~rectangle();};

然后myfirstmfcDoc.h中添加list

VS2019如何实现C++的MFC程序

std::list<graph*> graphList;

因为调用了list,所以在framework.h中添加

#include <list>

VS2019如何实现C++的MFC程序

这里要调用用OnRectangle()函数,之前生成的函数,我们现在添加下面的代码:

VS2019如何实现C++的MFC程序

    CmyfisrtmfcDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)        return;    pDoc->graphList.push_front(new rectangle(50, 50, 100, 100));     Invalidate();

修改myfirstmfcView.cpp中的OnDraw函数为如下:

VS2019如何实现C++的MFC程序

void CmyfisrtmfcView::OnDraw(CDC* pDC){    CmyfisrtmfcDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)        return;     // TODO: 在此处为本机数据添加绘制代码    std::list<graph*>::iterator v;    for (v = pDoc->graphList.begin(); v != pDoc->graphList.end(); ++v) {        (*v)->onDraw(pDC);    }}

接下来通过类向导添加消息

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

添加鼠标左键按下消息,左键松开消息,鼠标移动消息

VS2019如何实现C++的MFC程序

在生成的按键按下函数中

VS2019如何实现C++的MFC程序

void CmyfisrtmfcView::OnLButtonDown(UINT nFlags, CPoint point){    // TODO: 在此添加消息处理程序代码和/或调用默认值    CmyfisrtmfcDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)        return;     // TODO: 在此处为本机数据添加绘制代码    std::list<graph*>::iterator v;    for (v = pDoc->graphList.begin(); v != pDoc->graphList.end(); ++v) {        (*v)->onPress(point.x, point.y);    }    Invalidate();    //CView::OnLButtonDown(nFlags, point);}

跟上面一样的方式

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

自从生成的代码在myfirstmfcView中如下:

VS2019如何实现C++的MFC程序

void CmyfisrtmfcView::OnLButtonUp(UINT nFlags, CPoint point){    // TODO: 在此添加消息处理程序代码和/或调用默认值    CmyfisrtmfcDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)        return;     // TODO: 在此处为本机数据添加绘制代码    std::list<graph*>::iterator v;    for (v = pDoc->graphList.begin(); v != pDoc->graphList.end(); ++v) {        (*v)->onRelease(point.x, point.y);    }     //CView::OnLButtonUp(nFlags, point);}  void CmyfisrtmfcView::OnMouseMove(UINT nFlags, CPoint point){    // TODO: 在此添加消息处理程序代码和/或调用默认值    CmyfisrtmfcDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)        return;     // TODO: 在此处为本机数据添加绘制代码    std::list<graph*>::iterator v;    for (v = pDoc->graphList.begin(); v != pDoc->graphList.end(); ++v) {        (*v)->onMove(point.x, point.y);    }    Invalidate();//    CView::OnMouseMove(nFlags, point);}

到这里就完成了全部工作,可以进行编译了。

VS2019如何实现C++的MFC程序

生成下面的图形,矩形可以移动,可拉伸

VS2019如何实现C++的MFC程序

点击项目中的属性,在配置属性中选择高级,MFC使用 静态库,在编译一次,生成.exe可以其他电脑上不依赖动态库也能打开了。

VS2019如何实现C++的MFC程序

VS2019如何实现C++的MFC程序

感谢你能够认真阅读完这篇文章,希望小编分享的“VS2019如何实现C++的MFC程序”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网其他教程频道,更多相关知识等着你来学习!

--结束END--

本文标题: VS2019如何实现C++的MFC程序

本文链接: https://lsjlt.com/news/279442.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • VS2019如何实现C++的MFC程序
    这篇文章主要介绍了VS2019如何实现C++的MFC程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、创建项目然后点下一步,配置项目,这里我命名的是myfisrtmfc点...
    99+
    2023-06-15
  • VS2019实现C++的第一个MFC程序
    目录一、创建项目二、添加自定义的功能(以比较通用的画图为例)参考文献:一、创建项目 然后点下一步,配置项目,这里我命名的是myfisrtmfc 点击创建按钮,然后弹出下面的对话...
    99+
    2024-04-02
  • VS2019开发Linux C++程序的实现过程
    这篇文章主要讲解了“VS2019开发Linux C++程序的实现过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VS2019开发Linux C++程序的实现过程”吧!一级目录第一步, 先将...
    99+
    2023-06-20
  • vs2019 MFC如何实现office界面的画图小项目
    这篇文章主要为大家展示了“vs2019 MFC如何实现office界面的画图小项目”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vs2019 MFC如何实现office界面的画图小项目”这篇文章...
    99+
    2023-06-15
  • VS2019开发Linux C++程序的实现步骤
    一级目录 第一步, 先将自己的Linux 系统设为静态IP,具体操作如下: 1.修改/etc/network/interfaces 地址配置文件,如下所示: (注 查看ip命令: ip addr 查看网关命令: ...
    99+
    2022-06-03
    VS2019开发Linux C++ vs2019 Linux c++
  • vs2019 MFC实现office界面的画图小项目
    目录vs2019安装MFCvs2019 MFC实现office界面的画图小项目一、创建项目二、进入多个文档的控件界面三、编写画图小程序(先从画矩形开始)四、我们还可以再多画一些,例如...
    99+
    2024-04-02
  • 基于MFC如何实现类的序列化
    这篇文章主要介绍“基于MFC如何实现类的序列化”,在日常操作中,相信很多人在基于MFC如何实现类的序列化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于MFC如何实现类的序列化”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-02
  • MFC怎么实现类的序列化
    在MFC中,可以通过以下步骤来实现类的序列化:1. 在类的声明中添加`DECLARE_SERIAL`宏,用于声明该类可以被序列化。`...
    99+
    2023-08-14
    MFC
  • C++如何实现聊天小程序
    今天小编给大家分享一下C++如何实现聊天小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。涉及的技术:c++网络编程c++...
    99+
    2023-06-08
  • Qt6.0+vs2019环境配置的实现教程
    前言 2020年12月8号,期待已久的Qt6.0正式发布。 关于Qt6.0的更新说明,具体参考:https://wiki.qt.io/New_Features_in_Qt_6.0 本...
    99+
    2024-04-02
  • mfc撤销功能如何实现
    MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的C++类库。MFC提供了撤销...
    99+
    2023-09-16
    mfc
  • mfc如何实现撤销功能
    MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的框架,可以通过以下步骤实现撤...
    99+
    2023-10-23
    mfc
  • VS Code如何编写C/C++程序的实现步骤
    目录1、下载VsCode工具2、安装扩展程序插件3、编译软件3.1、MinGW安装完成后,需要配置环境变量3.2、配置环境变量1、下载VsCode工具 下载地址https://cod...
    99+
    2024-04-02
  • c# 如何实现自动更新程序
    目录主要功能介绍客户端main方法入口主窗体代码更新帮助类版本xml文件解析服务端版本xml文件自动升级服务Controller版本文件自动生成帮助类结语主要功能介绍 实现文件的自动...
    99+
    2024-04-02
  • 如何理解C++实现程序方法
    这篇文章将为大家详细讲解有关如何理解C++实现程序方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++实现程序解决问题,本程序采用射线法,由待测试点(v)水平引出一条射线B(v,w),计...
    99+
    2023-06-17
  • 如何实现C# Web Services升级程序
    这篇文章将为大家详细讲解有关如何实现C# Web Services升级程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。介绍一种用C# Web Services升级程序。通过C# Web Services...
    99+
    2023-06-18
  • C语言如何实现数独程序
    这篇文章主要介绍“C语言如何实现数独程序”,在日常操作中,相信很多人在C语言如何实现数独程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言如何实现数独程序”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-05
  • C++如何实现序列排序
    这篇文章主要讲解了“C++如何实现序列排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++如何实现序列排序”吧!Permutation Sequence 序列排序The set ...
    99+
    2023-06-19
  • VS2019中.NET如何实现打日志功能
    目录1:首先安装插件2:添加对应的配置文件 3:在生成的AssemblyInfo类中填写如下代码4:添加打印日志的类,这里的方法你可以根据自己的需要写5:在报异常的地方或者...
    99+
    2024-04-02
  • MFC程序中使用QT开发界面的实现步骤
    目录添加QT依赖添加信号槽机制添加qt界面配置元编译过程一些问题的处理测试信号槽使用qt designer 设计界面如果你有一个现成的MFC项目在做维护,但是你厌倦了使用MFC繁琐的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作