mfc 订阅
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 展开全文
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
信息
简    称
MFC
类    型
C/C++的图形化界面语言
开发者
微软
特    点
效率损失低
中文名
微软基础类库
使用者
大众
外文名
Microsoft Foundation Classes
MFC定义
MFC(Microsoft Foundation Classes)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。 MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。但是MFC的封装很浅,所以效率上损失不大。
收起全文
精华内容
下载资源
问答
  • MFC示例MFC示例MFC示例

    2010-01-13 10:41:39
    MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例MFC示例
  • 五子棋MFC 五子棋MFC 五子棋MFC

    热门讨论 2009-11-26 22:44:01
    五子棋MFC 五子棋MFC 五子棋MFC
  • 一点一点建立MFC程序新建MFC项目选择向导单个文档,取消文档视图结构支持使用经典菜单选择CMainFrame类新建的窗口在哪呢?启动调试开始修改创建吧修改一下新建Dialog改窗口ID对应你需要弹出的窗口改窗口的左上角的...

    新建MFC项目

    在这里插入图片描述

    在这里插入图片描述

    选择向导

    在这里插入图片描述

    单个文档,取消文档视图结构支持

    在这里插入图片描述

    在这里插入图片描述

    使用经典菜单

    在这里插入图片描述

    在这里插入图片描述

    选择CMainFrame类

    在这里插入图片描述

    新建的窗口在哪呢?

    在这里插入图片描述

    在这里插入图片描述

    启动调试

    取消加载,加载会很慢,你会发现出现了以下视图

    在这里插入图片描述

    开始修改创建吧

    在这里插入图片描述

    修改一下

    在这里插入图片描述

    新建Dialog

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    改窗口ID对应你需要弹出的窗口

    在这里插入图片描述

    改窗口的左上角的名字

    在这里插入图片描述

    在这里插入图片描述

    如何设计窗口呢

    在这里插入图片描述
    在这里插入图片描述

    添加处理事项

    在这里插入图片描述

    在这里插入图片描述

    为弹窗添加类

    在这里插入图片描述

    在这里插入图片描述

    生成

    在这里插入图片描述

    主函数添加头文件

    在这里插入图片描述

    添加控件响应

    在这里插入图片描述

    调试

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • MFC小游戏MFC小游戏MFC小游戏MFC小游戏

    千次下载 热门讨论 2010-08-13 21:29:42
    MFC小游戏MFC小游戏MFC小游戏MFC小游戏MFC小游戏 A D 左右 J 子弹
  • MFC DirectUI

    千次下载 热门讨论 2012-11-17 23:49:37
    MFC绝大部分的标准控件自绘:完美的标题栏重绘(window),button,combo,dialog,edit,list,menu,msgbox,progress,richedit,scroll,slider,splitter,static,tab,tree。 DirectUI:包含一些常用控件 button, checkbox, ...
  • 简易入门MFC

    万次阅读 多人点赞 2018-03-26 17:06:31
    工作需要用到MFC,需要能快速上手,中间碰到不懂的简单的看了下源码,参考了些资料。目标:做一个简单的计算器,代码就不考虑了,主要强调如何上手MFC,和简单了解MFC的框架。1.如何创建一个MFC工程项目创建MFC的...
    工作需要用到MFC,需要能快速上手,中间碰到不懂的简单的看了下源码,参考了些资料。


    目标:做一个简单的计算器,代码就不考虑了,主要强调如何上手MFC,和简单了解MFC的框架。


    1.如何创建一个MFC工程项目
    创建MFC的过程如下:(visual studio 2012)
    1>.新建->项目:选择MFC应用程序,名称这里用test(随意,和后面代码那里一致)。然后点确定。

    2>.出现MFC生成向导:这里选择基于对话框,其他默认。

    2.界面设计方式
    2.1.拖拉控件及修改空间属性
    1>.界面设计主要是在这个资源文件中修改。
    2>.控件在工具箱中拖拽出来放到界面上。

    3>.修改控件属性
    单击控件后,可以在属性中修改控件的属性。
    常用的属性
    Caption 标题
    ID 控件标识

    2.2.修改控件布局
    这个没查资料,感觉可以设置布局。
    界面的左边和上方能控制水平和垂直方向上的自动对齐。
    可以在设置好位置后,将控件移动对齐到这个方向的位置,后面拖动这个位置的坐标就可以进行整体对齐移动了。

    3.控件的事件回调函数处理
    双击控件,可自动跳转到点击控件的事件回调处理函数。
    可以在跳转到的函数回调上编写处理代码:
    void CtestDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    CString str = NULL;
    GetDlgItemText(IDC_EDIT1, str);
    SetDlgItemText(IDC_EDIT1, str+_T("1"));
    }
    这里在界面上除自身的代码外比较常用的就是这些属性相关(设置和获取)的函数。
    这部分可以通过搜索引擎或者MSDN解决。

    4.粗略分析自动生成的代码
    4.1.关于自动生成的几个类
    这里可能涉及到框架的部分程序了,这里做简单的了解。
    首先最简单的Dialog中间有这几个类:CAboutDlg,CtestApp,CtestDlg。
    其中CAboutDlg类和CtestDlg类被放到了testDlg.cpp中实现。
    1>.CAboutDlg
    CAboutDlg是用于应用程序“关于”菜单项的 CAboutDlg 对话框。估计是这个关于的对话框。在.rc的资源中的dialog中的IDD_ABOUTBOX中可修改。。
    这部分是CAboutDlg的代码,可以看出一个简单的对话框窗口:
    1.继承CDialogEx类;
    2.有自己的映射关系;
    3.DoDataExchange函数;这个函数在MFC框架中的UpdateData会调用。
    4.类中声明的IDD枚举???

    class CAboutDlg : public CDialogEx
    {
    public:
    CAboutDlg();
    enum { IDD = IDD_ABOUTBOX };// 对话框数据

    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

    // 实现
    protected:
    DECLARE_MESSAGE_MAP()
    };

    CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}

    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialogEx::DoDataExchange(pDX);
    }

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
    END_MESSAGE_MAP()

    2>.CtestDlg
    所以CtestDlg应该是主界面的代码。结构和上述类似。只是增加了几个消息回调函数。但中间有结果回调函数比较特殊。应该是和后面几个消息回调连着的,可能不需要给用户自定义,连名字都省略了= =
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    注:afx_msg 是个标识,来表示MFC的消息处理

    OnQueryDragIcon从注释上意思:当用户拖动最小化窗口时系统调用此函数取得光标
    OnPaint从注释上意思:来绘制该图标。对于使用文档/视图模型的 MFC 应用程序。在初始化后会向窗口发送WM_PAINT消息,然后框架自动回调。这部分的代码也是由框架封装好的CDialogEx::OnPaint(),可以跳转进去看看,用来绘制图形的。
    OnSysCommand不详。。。
    另外:BOOL CtestDlg::OnInitDialog()是初始化消息的回调函数。用来初始化窗口。

    3>.CtestApp
    CtestApp类在test.h/test.c中,继承了CWinApp,定义应用程序的类行为,且有唯一一个对象theApp,在一开始就会被构造。
    这个类中的构造函数添加了支持重新启动管理器的flag。
    另一个方法是初始化实例InitInstance。

    这里需要提到MFC框架的入口和初始化过程:
    theApp在一开始就被构造,初始化了一些变量,然后将当前应用指到本身。
    MFC的入口在源代码的APPMODUL.CPP文件中的_tWinMain函数中。_tWinMain中调用了AfxWinMain函数。
    AfxWinMain为一个MFC框架的 全局函数 。在这个函数中模仿了WIN32的创建一个应用的过程:
    1.获得一个CWinThread和app的指针(CWinApp也是继承CWinThread的,通过宏可知这两个指针一样。)
    2.通过APP指针初始化应用(InitApplication),初始化CWinThread指针的实例(InitInstance方法)。
    InitApplication做框架的内部管理工作。
    这里InitInstance方法就调用CtestApp重写的部分(这部分代码其实也是系统自动生成的)。这个函数完成了窗口CtestDlg创建,显示,并向窗口发送WM_PAINT消息的功能。
    注:这里好像不同的写法(使用方式)中间的调用过程也不大一样。如果是前面那种方式在DoModal里就调用了DoDataExchange函数来加载资源??
    3.运行theApp

    4.2.关于函数回调部分的代码
    前面说双击回调后,会自动跳转生成的代码。这里自动生成的部分主要有:
    回调处理函数:
    void CtestDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    }

    关系映射:
    BEGIN_MESSAGE_MAP(CtestDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &CtestDlg::OnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &CtestDlg::OnBnClickedButton2)
    ON_BN_CLICKED(IDC_BUTTON3, &CtestDlg::OnBnClickedButton3)
    ON_BN_CLICKED(IDC_BUTTON4, &CtestDlg::OnBnClickedButton4)
    ON_BN_CLICKED(IDC_BUTTON5, &CtestDlg::OnBnClickedButton5)
    ON_BN_CLICKED(IDC_BUTTON6, &CtestDlg::OnBnClickedButton6)
    ON_BN_CLICKED(IDC_BUTTON7, &CtestDlg::OnBnClickedButton7)
    ON_BN_CLICKED(IDC_BUTTON8, &CtestDlg::OnBnClickedButton8)
    ON_BN_CLICKED(IDC_BUTTON9, &CtestDlg::OnBnClickedButton9)
    ON_BN_CLICKED(IDC_BUTTON10, &CtestDlg::OnBnClickedButton10)
    END_MESSAGE_MAP()

    声明:
    afx_msg void OnEnChangeEdit1();

    调到宏里面看看原理:(截取了一段button的)
    // User Button Notification Codes
    #define ON_BN_CLICKED(id, memberFxn) \
    ON_CONTROL(BN_CLICKED, id, memberFxn)
    #define ON_BN_DOUBLECLICKED(id, memberFxn) \
    ON_CONTROL(BN_DOUBLECLICKED, id, memberFxn)
    #define ON_BN_SETFOCUS(id, memberFxn) \
    ON_CONTROL(BN_SETFOCUS, id, memberFxn)
    #define ON_BN_KILLFOCUS(id, memberFxn) \
    ON_CONTROL(BN_KILLFOCUS, id, memberFxn)

    定义了几种动作的宏(每种控件间会有差异),将控件标识和对应的动作类型和对应的响应回调函数连接起来。宏里面的结构如下,看上去像一个表的形式。
    // for general controls
    #define ON_CONTROL(wNotifyCode, id, memberFxn) \
    { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)id, AfxSigCmd_v, \
    (static_cast< AFX_PMSG > (memberFxn)) },

    5.其他注意事项
    5.1.关于命名的问题
    命名的规则:


    5.2.MFC自定义的类型
    第一次用MFC中,出现了一些类型,比如CString,可以在afx.h头文件中查看它的定义。另外使用MSDN可以查看。
    另外:这里要注意字符集的问题。可以用_T("XXXX")来统一字符集。

    5.3.窗口中定义的控件
    拖进界面生成的控件的资源被,按照一定的组织格式放在了test.rc这个文件中。MFC框架中在CtestApp::InitInstance()里就加载这个.rc的文件的部分并进行了显示。
    注*:这里的控件也可在窗口创建的回调函数中创建。只不过这里的方法不同。

    5.4.关于一些辅助的宏
    看到了随便加进来一下:
    ①. TRACE
    TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
    追踪路径,先看TRACE的定义:
    #define TRACE ATLTRACE
    #define ATLTRACE ATL::CTraceFileAndLineInfo(__FILE__, __LINE__)
    void __cdecl operator()(
    _In_ DWORD_PTR dwCategory,
    _In_ UINT nLevel,
    _In_z_ const char *pszFmt,
    ...) const
    {
    va_list ptr; va_start(ptr, pszFmt);
    ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, dwCategory, nLevel, pszFmt, ptr);
    va_end(ptr);
    }
    再往下好像封装进去了,大概可以通过这个宏,可以把追踪信息文件,行数,必要的提示,警告等级之类的都显示下来。
    TRACE宏只对Debug 版本的工程产生作用。

    ②.ASSERT
    编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是 异常处理 的一种高级形式。断言表示为一些 布尔表达式 ,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证, 因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

    看看MFC中的ASSERT。
    #define ASSERT(f) DEBUG_ONLY((void) ((f) || !::AfxAssertFailedLine(THIS_FILE, __LINE__) || (AfxDebugBreak(), 0)))
    #define DEBUG_ONLY(f) (f)
    相当于DEBUG模式下,直接判断ASSERT中的表达式f是否满足条件。如果满足表达式满足,就会调用AfxAssertFailedLine,然后中断退出。

    6.相关参考
    VC++深入讲解

    7.总结
    在大致看完之后,MFC其实就是Windows下的API进行进一步的封装。如果直接在.rc文件中设计,只需添加对应的回调函数再加处理即可。这样比较快。
    另外一种是对MFC提供出来的框架的部分进行重写(根据自己需求),但大体上也是封装Windows的API的过程,这样会相对麻烦一些。

    展开全文
  • vc++ MFC ppt vc++ MFC ppt vc++ MFC pptvc++ MFC ppt vc++ MFC ppt vc++ MFC pptvc++ MFC ppt vc++ MFC ppt vc++ MFC pptvc++ MFC ppt vc++ MFC ppt vc++ MFC ppt
  • MFC学习MFC构架

    千次下载 2009-06-26 18:55:26
    学习MFC构架的最好的学习资料,可以很快掌握MFC构架及其成为高级工程师
  • VC++MFC小游戏实例教程(实例)+MFC类库详解

    千次下载 热门讨论 2013-09-12 18:39:38
    VC++MFC小游戏实例教程(实例)+MFC类库详解 免费下载
  • MFC编写天气预报

    千次下载 热门讨论 2014-01-10 15:52:33
    MFC编写的天气预报小程序,涉及到WinInet、Json等技术,对于没接触这方面的猿们会有帮助,界面不算很好,有需要的可以自己做调整~~
  • MFC中使用Duilib DuiLib_Mfc

    热门讨论 2012-12-13 10:51:11
    Duilib中使用MFC 编译环境 VS2010+WIN7
  • MFC自绘控件 播放器

    千次下载 热门讨论 2011-07-08 23:26:23
    利用MFC自绘控件做的一款播放器,自己封装了播放类,压缩文件中有详细的说明.
  • vs2019 安装MFC

    万次阅读 多人点赞 2019-05-08 10:19:10
    vs2019的MFC使用博主也提供了十分详细的范例,博客为: vs2019 MFC实现office界面的画图小项目(超超级详细) 有许多新手不知道MFC在vs2019里的安装选项,其实它不会在勾选工作负载时自动默认勾选,而通常需要人为...

    vs2019的MFC使用博主也提供了十分详细的范例,博客为:

    vs2019 MFC实现office界面的画图小项目(超超级详细)


    有许多新手不知道MFC在vs2019里的安装选项,其实它不会在勾选工作负载时自动默认勾选,而通常需要人为勾选,具体安装步骤如下:(安装时间不是很长,网速够快几分钟就下载完毕)

     1.打开vs安装程序

    2.选择Visual Studio扩展开发

                                                              

    3.选择C++ MFC 生成工具(x86 和 x64)进行安装

                                                            

    4.选择修改,等待安装

    5.等待安装完成

    6.安装完成,我们打开vs2019

    7.我们创建新项目,可以看到已经有MFC应用这个选项

    说明我们的MFC安装成功~

    展开全文
  • SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC介绍SDK和MFC...
  • MFC 贪吃蛇

    热门讨论 2013-11-27 21:08:44
    MFC + DirectUI 开发的贪吃蛇,能玩,有些功能没实现
  • MFC中文手册,MFC类库详解,MFC参考手册

    热门讨论 2009-11-11 23:48:25
    MFC中文手册,MFC类库详解,MFC参考手册
  • MFC经典教程

    2016-12-07 09:41:32
    精选了3本书 MFC internal 从源代码角度讲解了MFC的架构和内部机制,MFC程序员必看的教程 STL,,,,这本书是C++标准模板库的参考手册 Advanced MFC Programming MFC熟练开发者的参考文献。
  • VS2017加装MFC以及创建第一个MFC程序

    万次阅读 多人点赞 2019-07-02 17:50:11
    VS2017加装MFC模块 使用VS2017创建第一个MFC程序 vs2017加装MFC模块 1、打开vs,依此点击文件->新建->项目,在弹出的窗口中查看是否有MFC选项,如下图。如果没有点击左下角“打开VisualStudio安装程序” ...

    主要内容:

    • VS2017加装MFC模块
    • 使用VS2017创建第一个MFC程序

    vs2017加装MFC模块

    1、打开vs,依此点击文件->新建->项目,在弹出的窗口中查看是否有MFC选项,如下图。如果没有点击左下角“打开VisualStudio安装程序”

    2、在打开的安装程序中点击“使用c++的桌面开发工具”然后勾选mfc

    3、点击右下角修改,等待安装完成,重启vs

    创建MFC程序

    1、打开已加装MFC的vs,点击文件->新建-->项目

    2、在新建项目窗口中选择MFC->MFC应用程序->填写项目名称路径等信息,点击确定

    3、选择应用程序类型为“基于对话框”点击下一步直至完成 

    4、在右下角资源管理器中可看到项目中的文件

    5、点击资源视图-->点击Dialog中的第二个文件查看窗口界面

    6、点击工具箱打开控件列表

    7、从控件列表向界面中拖入一个Button控件,点击控件在右下角属性栏可查看其属性

    8、右击界面中的Button控件,点击添加事件处理程序、在弹出的对话框中选择消息类型为鼠标点击,点击添加编辑自动跳转至编辑界面

     9、写入如下代码

    	CString str;	//定义字符串
    	str.Format(_T("HelloWorld"));	//将helloworld转为Cstring类型字符串
    	SetDlgItemText(IDC_BUTTON1, str);	//设置ID为“IDC_BUTTON1”的控件显示str

    10、点击调试->开始执行(不调试)->点击窗口中的Button1观察效果

    写在最后:

    由于项目需要,给vs加装了mfc并学习了一部分知识,此篇简要介绍了如何加装mfc以及创建一个mfc程序。不足之处敬请指出。

    展开全文
  • 使用 visual studio 2017 创建 MFC 程序

    万次阅读 2018-09-07 20:21:03
    MFC 在很多年就已经停止更新了,微软官方也主推 .net 技术,但是 MFC 也一直保留了下来。下面这个简单例子仅仅说明如何用 MFC 。   创建工程     到这一步,就已经创建了一个桌面应用程序框架。可以...
  • MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答MFC经典问答
  • MFC深入浅出之一MFC基础

    千次阅读 多人点赞 2019-05-17 14:16:47
    MFC基础 总结
  • 精通MFC\精通MFC.

    热门讨论 2008-12-02 14:35:55
    \精通MFC.\精通MFC.\精通MFC.\精通MFC.\精通MFC.
  • MFC简介以及基础使用(小白级别入门讲解)

    万次阅读 多人点赞 2020-10-11 09:54:07
    目录Windows消息机制窗口句柄消息与消息队列WinMain函数Windows编程模型MFCMFC简介MFC程序入口MFC的消息映射 Windows消息机制 窗口 一个Windows应用程序中至少有一个窗口,称为主窗口。我们在客户区进行图案的绘制。...
  • 若该文为原创文章,未经允许不得转载 原博主博客地址:... 目录 前言 Demo 使用VS7建立MFC动态链接库 前提:需要安装VS中的MFC环境 建立MFC动态链接库 编写测试函数 动态库所需...
  • MFC工程中使用MFC

    千次阅读 2014-11-26 23:26:47
    需求说明C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console Application、MFC Application、Win32 Project等。在创建MFC工程时,通过IDE的向导会自动帮我们创建相应的类文件和包含必需的头文件,...
  • Visual Studio 2019 + MFC——配置MFC

    千次阅读 2020-04-10 13:29:53
    1.查看vs2019里面有没有配置MFC 新建项目,如果能在右边找到MFC应用则配置了,否则没有 2.如果没有安装,将右边的的竖直移动条拉到底部,点击安装多个工具和供能 3.选中在C++桌面开发==》在右侧选中相关功能==...
  • 前言我们在使用Microsoft Visual Studio软件(也就是我们常常说的VS)时,其中项目属性中有一项叫做“MFC的使用”,里面包含有不同的设置,会影响我们所编写的程序的使用,今天我就遇到了这个情况,我们一起来总结...
  • MFC websocket server | MFC websocket服务器

    热门讨论 2013-03-14 21:11:13
    MFC写的websocket,支持最新chrome 25版。 资源含有工程原文件和可执行程序,由VS2010版开发环境开发。
  • MFC定时器的使用 MFC定时器的使用

    热门讨论 2010-06-04 22:16:33
    MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用
  • VS2010-MFC VS2010的MFC例子代码

    热门讨论 2010-11-09 23:10:50
    VS2010-MFC VS2010的MFC例子代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 309,022
精华内容 123,608
关键字:

mfc