C++中的MFC项目中的带参构造函数初始化问题,急急急~

C++中的MFC项目中的带参构造函数初始化问题,急急急~,第1张

用一个指针来做吧,在需要的位置new一个对象就可以了,也就是说在h文件中声明一个这个类的指针,在Init函数中new一个对象,用指针指向它就可以了,在对话框close的时候delete就可以了。

你说的这种 *** 作方法WORD当中有啊!!!!!它的“主控文档”功能就用实现啊!

在编辑一个长文档时,如果将所有的内容都放在一个文档中,那么工作起来会非常慢,因为文档太大,会占用很大的资源。用户在翻动文档时,速度就会变得非常慢。如果将文档的各个部分分别作为独立的文档,又无法对整篇文章作统一处理,而且文档过多也容易引起混乱。

使用Word 的主控文档,是制作长文档最合适的方法。主控文档包含几个独立的子文档,可以用主控文档控制整篇文章或整本书,而把书的各个章节作为主控文档的子文档。这样,在主控文档中,所有的子文档可以当作一个整体,对其进行查看、重新组织、设置格式、校对、打印和创建目录等 *** 作。对于每一个子文档,我们又可以对其进行独立的 *** 作。此外,还可以在网络地址上建立主控文档,与别人同时在各自的子文档上进行工作。

主控文档是子文档的一个“容器”。每一个子文档都是独立存在于磁盘中的文档,它们可以在主控文档中打开,受主控文档控制;也可以单独打开。创建主控文档的步骤如下:

(1)单击工具栏中的按钮,创建一个空文档。

(2)选择菜单中的菜单项,并切换到大纲视图下。此时工具栏自动激活,工具栏及各按钮的具体含义如图6-1 所示。

(3)输入文档的大纲,并用内置的标题样式对各级标题进行格式化。

(4)选定要拆分为子文档的标题和文本。注意选定内容的第一个标题必须是每个子文档开头要使用的标题级别。例如,所选内容中的第一个标题样式是“标题3”,那么在选定的内容中所有具有“标题3”样式的段落都将创建一个新的子文档。选定的方法是鼠标移到该标题前的空心十字符号,此时鼠标指针变成十字箭头,单击鼠标即可选定该标题包括的内容。

(5)单击工具栏中的按钮,原文档将变为主控文档,并根据选定的内容创建子文档,如图6-2 所示。可以看到,Word 把每个子文档放在一个虚线框中,并且在虚线框的左上角显示一个子文档图标,子文档之间用分节符隔开。

(6)把文件保存下来即可。Word 在保存主文档的同时,会自动保存创建的子文档,并且以子文档的第一行文本作为文件名。

注意:

如果文档中已经存在子文档,而且文档中的子文档处于折叠状态,那么按钮会无效。要使它有效,需要首先单击按钮。

在Word 2000 中,不但可以新建一个主控文档,而且可以将已有文档转换为主控文档。这样,用户就可以在以前工作的基础上,用主控文档来组织和管理长文档了。将已有文档转换为主控文档与创建空的主控文档基本类似,步骤如下:

(1)打开要转换为主控文档的已有文档。

(2)单击菜单中的菜单项,切换到大纲视图。

(3)通过使用内置标题样式或大纲级别建立主控文档的大纲, *** 作方法与创建主控文档时建立大纲的方法相同,可通过工具栏中菜单项所带的下拉列表来定义文本是标题或正文。

(4)选定要划分为子文档中的标题和文本,如果某些文本包含在一个标题下,那么在单击这个标题前的分级显示符号选定这个标题时,这些文本也会被同时选定,创建子文档后,这些文本也将包含在这个子文档中。

(5)单击工具栏中的按钮,创建子文档。

(6)把文件另存为别的文件名。

不管主控文档的文件名如何,每个子文档指定的文件名不会影响,因为它只是根据第一行的文本自动命名的。如果文件名相同,会自动在后面加上“1,2,…”来区别。

612 插入子文档

在主控文档中,可以插入一个已有文档作为主控文档的子文档。这样,就可以用主控文档将以前已经编辑好的文档组织起来,而且还可以随时创建新的子文档,或将已存在的文档当作子文档添加进来。例如,作者交来的书稿是以一章作为一个文件来交稿的,编辑可以为全书创建一个主控文档,然后将各章的文件作为子文档分别插进去。 *** 作方法如下:

(1)打开主控文档,并切换到主控视图。

(2)如果子文档处于折叠状态,先单击工具栏上的按钮,以激活按钮。

(3)将光标定位在添加已有文档的地方,确保光标的位置在已有的子文档之间。如果将改变定位在某一子文档内,那么插入的文档也会位于这个子文档内。

(4)单击工具栏中的按钮,将d出如图6-3 所示的对话框。

(5)在对话框的框的文件列表中找到所要添加的文件,然后单击按钮。

经过上述 *** 作后,选定的文档就作为子文档插入到主控文档中,用户可以像处理其他子文档一样处理该子文档。

613 展开和折叠子文档

在打开主控文档时,将折叠所有子文档,也就是每个子文档都将如图6-4 所示的超级链接方式出现。单击链接点,就可以单独打开该子文档。

要在主控文档中展开所有的子文档,可以单击工具栏中的按钮,文档展开后,原来的按钮将变为按钮。再次单击按钮,子文档又将成为如图6-4 所示的折叠状态。

当文档处于展开状态时,如果要打开并进入该子文档,可以双击该子文档前面的,Word 会单独为该子文档打开一个窗口。

614 重命名子文档

在创建子文档时,Word 2000 会自动为子文档命名。此外当把已有的文档作为子文档插入到主控文档中时,该子文档用的名字就是文档原来的名字。如果用户为了便于记忆管理,可以为该子文档重命名。

注意:

不能用等程序或DOS 命令来对该子文档重命名或移动子文档,否则,主控文档将找不到并重新组织子文档。

可以按如下步骤对子文档进行重命名:

(1)打开主文档,并切换到主控文档显示状态。

(2)单击按钮折叠子文档。

(3)单击要重新命名的子文档的超级链接,打开该子文档。

(4)单击菜单中的菜单项,打开对话框。

(5)选择保存的目录,输入子文档的新文件名,单击按钮。

关闭该子文档并返回主控文档,此时会发现在主控文档中原子文档的文件名已经发生改变,而且主控文档也可以保持对子文档的控制。注意保存该主控文档即可完成对子文档的重命名。

在重新命名子文档后,原来子文档的文件仍然以原来的名字保留在原来的位置,并没有改变原来的文件名和路径。Word 只是将子文档文件以新的名字或位置复制了一份,并将主控文档的控制转移到新命名后的文档上。原版本的子文档文件仍保留在原来的位置,用户可以对原来的文件自由处理,删除或者移动都不影响主控文档。

615 重新排列子文档

在主控文档中,子文档是按次序排列的,而且这个次序也是整篇长文档中各部分内容的次序。如果要改变它们的次序,如要把第一节调整到第二节,第二节作为第一节,可以按如下步骤进行。

(1)打开并显示主控文档。

(2)如果子文档处于折叠状态,要首先展开子文档。

(3)如果要重新排列的子文档处于锁定状态,首先解除锁定。解除的方法参看617 节。

(4)单击子文档图标,选定要移动的子文档,例如,在图6-5 中选定的是第二节(512)。

(5)将子文档图标拖动到新的位置。在拖动过程中,Word 将用一条带箭头的横线代表被拖动的子文档,这条横线的所处的位置就是子文档拖动后的位置。将这条横线到达正确位置后再松开鼠标即可,如图6-5 所示。

完成上述 *** 作后,被选定的子文档就会移到新的位置,从而实现了子文档的重排。

616 合并和拆分子文档

合并子文档就是将几个子文档合并为一个子文档。合并子文档的 *** 作步骤如下:

(1)在主控文档中,移动子文档将要合并的子文档移动到一块,使它们两两相邻。

(2)单击子文档图标,选定第一个要合并的子文档。

(3)按住Shift 键不放,单击下一个子文档图标,选定整个子文档。

(4)如果有多个要合并在一起的子文档,重复步骤(3)。

(5)单击工具栏中的按钮即可将它们合并为一个子文档。在保存主文档时,合并后的子文档将以第一个子文档的文件名保存。

如果要把一个子文档拆分为两个子文档,具体步骤如下:

(6)在主控文档中展开子文档。

(7)如果文档处于折叠状态,首先展开;如果处于锁定状态,首先解除锁定状态。

(8)在要拆分的子文档中选定要拆分出去的文档,也可以为其创建一个标题后再选定,如图6-6 所示。

(9)单击工具栏中的按钮。被选定的部分将作为一个新的子文档从原来的子文档中分离出来,如图6-7 所示。

该子文档将被拆分为两个子文档,子文档的文件名由Word 自动生成。用户如果没有为拆分的子文档设置标题,可以在拆分后再设定新标题。

617 锁定主控文档和子文档

在多用户协调工作时,主控文档可以建立在本级硬盘上,也可以建立在网络盘上。合作可以共用一台计算机,也可以通过网络连接起来。如果某个用户正在某个子文档上进行工作,那么该文档应该对其他用户锁定,防止引起管理上的混乱,避免出现意外损失。这时其他用户可以也只能以只读方式打开该子文档,其他用户只可以对其进行查看,修改后不能以原来的文件名保存,直到解除锁定后才可以。

锁定或解除主控文档的步骤如下:

(1)打开主控文档。

(2)将光标移到主控文档中

(3)单击工具栏中的按钮。

此时主控文档自动设为只读,用户将不能对主控文档进行编辑。但可以对没有锁定的子文档进行编辑并可以保存。如果要解除主控文档的锁定,只需再将光标移到主控文档中,单击按钮即可。

要锁定子文档,同样要把光标移到该子文档中,然后单击工具栏中的按钮即可锁定该子文档。锁定的子文档同样不可编辑,即对键盘和鼠标的 *** 作不反应,锁定后的子文档以图标标识,锁定后的主文档在文档中没有标识,但在标题栏中有两个字来标识。

解除子文档的锁定与解除主控文档的锁定方法相同。

618 在主控文档中删除子文档

如果要在主控文档中删除某个子文档,则可以先选定要删除的子文档,即单击该子文档前面的图标,然后按Delete 键即可。

从主控文档删除的子文档,并没有真的在硬盘上删除,只是从主控文档中删除了这种主从关系。该子文档仍保存在原来的磁盘位置上。

619 在子文档之间移动或复制文本或图形

在编辑长文档时,一个子文档经常会用到另一个子文档中的文本或图形。用户可以利用拖动的办法在两个子文档中进行移动或复制文档中的内容。如果文档在折叠状态,请首先展开子文档。用户可以直接在主控文档视图中移动或复制文档或图形,也可以切换到普通视图下进行,

如果文档很长,两个子文档距离比较长,直接拖动不方便,用户可以利用复制粘贴的方法进行即可。也可以把文档折叠起来,然后单击相应子文档的链接点,以另一个窗口打开子文档,再在这两个子文档中粘贴复制文本或图形即可。

6110 将子文档转换为主控文档的一部分

当在主控文档创建或插入了子文档之后,每个子文档都被保存在一个独立的文件中。如果想把某个子文档转换成主控文档的一部分。步骤如下:

(1)选定要转换的子文档

(2)单击工具栏中的按钮。

(3)该子文档的外围虚线框和左上角的子文档图标消失,该子文档就变成主控文档的一部分。

建议你用“主控文档”作为关键字在百度搜一下,你将得到更多知识。

祝你成功!!!

都是什么回答啊

楼主 你没有了解MFC的运行机制就去看他写他所以你先要了解他的机制 已经各个CPP H都是什么

下面我就给你说下

在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数也就是说MFC封装了Windows API 你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库 然后你来调用 只不过这个类不是你写的

MFC提供数百个类,最重要的、也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大应用程序的基石。

1>封装特性:构成MFC框架的是MFC类库而MFC类库又是C++的一个类库。这些类封装WIN32应用程序编程接口,OLE(Object Link Embed 对象链接嵌入)特性,ODBC和DAO数据访问的功能。

2>继承特性:MFC抽象出了众多类的共同特性,并设计出一些基类作为实现其他类的基础,这些类中最重要的类是CObject类和CCmdTarget类,程序员可以从适当的MFC类中派生出自己的类,实现特定的功能达到编程的目的。

3>虚拟和消息映射:MFC是以C++为基础,当然支持虚函数,但作为一个编程框架必须要解决的是效率问题:如果MFC仅仅通过虚函数来支持动态约束必然会产生大量的虚函数表这样编程框架过于臃肿而且消耗更多的内存。但是MFC建立了消息映射机制这样降低了内存的使用却大大提高了效率

消息映射是一个将消息和成员函数相互关联的表,当应用程序的框架窗口接收到一个消息时,MFC将搜索该窗口的消息映射,如果存在一个处理消息的处理程序,那么就调用该处理程序

它通过宏来实现消息到成员函数的映射,而且这些函数不必是虚拟的成员函数,这样不需要为消息映射函数生成一个很大的虚拟函数表(V表),节省内存。

MFC消息映射机制:

将消息与消息处理函数联系起来,形成一一对应的机制。

消息映射宏

声明: DECLARE_MESSAGE_MAP

定义:

BEGIN_MESSAGE_MAP

ON_COMMAND

ON_CONTROL

ON_MESSAGE

END_MESSAGE_MAP

MFC主要组成部分:类、宏和全局函数。

类是MFC中最主要的内容。MFC类是以层次结构方式组织起来的。MFC中的类分成两部分,除了一些辅助类,大多数的MFC类是直接或间接从根类CObject派生而来。

MFC宏主要功能:消息映射、运行时对象类型服务、诊断服务、异常处理。

MFC约定:全局函数以“Afx”为前缀,全局变量以“afx”为前缀

MFC类的层次关系

CObject项目类)->CCmdTarget(消息响应类)->

{

CWinThread(线程类)->CWinApp(Window应用程序类)

CDocument(文档类)

CWnd(窗体类)->[

CFrameWnd(框架类)

CView(视图类)

]

}

CObject类由于MFC中大部分类是从CObject类继承而来的,CObject类描述了几乎所有的MFC类的一些公共特性,CObject类为程序员提供了对象诊断、运行时类型识别和序列化等功能。

CCmdTarget类由CObject类直接派生而来,它负责将消息发送到能够响应这些消息的对象。它是所有能进行消息映射的MFC类的基类。

CWinApp类在任何MFC应用程序中有且仅有一个CWinApp派生类的对象,它代表了程序中运行的主线程,也代表了应用程序本身。 CWinApp类取代了WinMain()主函数在SDK应用程序中的地位。传统SDK应用程序WinMain()函数完成的工作。现在由类CWinApp的InitApplication(),InitInstance()和Run()三个成员函数承担。

CWnd类由CCmdTarget类直接派生而来,该类及其派生类的实例是一个窗口。CWnd类代表了MFC中最基本的GUI对象,它是一个功能最完善、成员函数最多的MFC类。

CFrameWnd类是CWnd类的派生类,主要用来掌管一个窗口,它取代了SDK应用程序中窗口函数WndProc()的地位。CFrameWnd类的对象是一个框架窗口,包括边框、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。

CDocument类在应用程序中作为用户文档类的基类,它代表了用户存储或打开的一个文件。

CView类是MFC中一个很基本的类,它作为其它MFC视图类和用户视图派生类的基类。

从API编程到MFC编程的过渡:

WinMain()

{ 初始化WNDCLASS

注册窗体结构

创建窗口 ->>>>>>>>应用程序类CWinApp

显示窗口

消息循环

}

WndProc()

{ switch(…)

->>>>>>>>>框架窗口类CFrameWnd

}

MFC Object和Windows Object的对应关系:

描述 Windows句柄 MFC Object

窗口 HWND CWnd

设备上下文 HDC CDC

菜单 HMENU CMenu

笔 HPEN CPen

刷子 HBRUSH CBrush

字体 HFONT CFont

位图 HBITMAP CBitmap

套接字 SOCKET CSocket

三、手工创建一个MFC应用程序:

注意:创建MFC程序,要创建一个Win32空项目,并要选择项目属性中的”在共享DLL文件中使用MFC,然后新建我们的文件

例子:在”helloh”头文件中添写如下代码:

class CMyApp:public CWinApp

{

public:

virtual BOOL InitInstance();//虚函数

};

class CMainWindow:public CFrameWnd

{

public:

CMainWindow();

protected:

afx_msg void OnPaint();

DECLARE_MESSAGE_MAP();//声明消息映射

};

在”hellocpp”源文件中添写如下代码:

#include <afxwinh>

#include “helloh"

CMyApp myApp;

BOOL CMyApp::InitInstance()

{

m_pMainWnd = new CMainWindow;

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

return TRUE;

}

BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd)

ON_WM_PAINT()

END_MESSAGE_MAP() //消息映射

CMainWindow::CMainWindow() //构造函数初始化

{

Create(NULL,“我的第一个MFC应用程序”);//创建窗体

}

void CMainWindow::OnPaint()

{ CPaintDC dc(this);

CRect rect;

GetClientRect(&rect);

dcDrawText("Hello MFC",-1,&rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);

}

CWinApp是应用程序类,在MFC应用程序中必须从这个类派生出一个类,该派生类是MFC应用程序的入口

必须定义这个派生类的对象,并且只能有一个这个对象代表整个应用程序。

成员函数:InitInstance()

功能:初始化应用程序实例和窗口实例,

虚函数CWinApp::InitInstance必须在派生类中重写。在InitInstance函数中,编写初始化代码,如:

创建一个窗口

显示一个窗口

CFrameWnd类

作用:为应用程序提供一个窗口,同时实现消息处理功能。

成员函数: Create()

功能:创建窗体,将之赋于CFrameWnd对象上。

BOOL Create(窗口类型, 窗口标题,显示风格,显示区域,符窗口句柄,菜单,扩展显示风格,上下文对象)共有8个参数,前两个必须给出,后6个可以默认。

MFC应用程序的核心就是基于CWinApp类的应用程序对象,CWinApp提供了消息循环来检索消息并将消息调度给应用程序的窗口我们在编写MFC应用程序时,要包含afxwinh,

一个MFC应用程序可以有且仅有一个应用程序对象,对象必须声明为在全局范围内有效(也就是全局对象),以便它在程序开始时即在内存中被实例化

我们的Hello MFC的应用程序类被命名为CMyApp,它在hellocpp中用如下语句进行了实例化:

CMyApp myApp;

CMyApp的类声明在helloh中代码如下:

class CMyApp:public CWinApp

{

public:

virtual BOOL InitInstance();

};

CMyApp没有声明任何的数据成员,只是重写了一个从CWinApp类中继承来的函数,在应用程序的生存期内InitInstance的调用比较早,是在应用程序开始运行以后而窗口创建之前,除非InitIstance创建一个窗口,否则应用程序是不会有窗口,这正是为什么即使最小的MFC应用程序也必须从CWinApp派生出一个类并重写CWinApp::InitIstance的原因

InitInstance函数:CWinApp::InitInstance是一个虚函数,其默认 *** 作仅包含一条语句:return TRUE;

InitInstance是用来执行程序每次开始时都需要进行的初始化工作最好的地方

在hellocpp中,CMyApp的InitInstance通过实例化hello的CMainWindow类来创建hello窗口,语句:

m_pMainWnd = new CMainWindow;

构造了一个CMainWindow对象指针,并将其地址复制到了应用程序对象的m_pMainWnd数据成员中,窗口创建以后,InitInstance就会通过CMainWindow指针调用ShowWindow和UpdateWindow函数显示它:

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

ShowWindow和UpdateWindow是所有窗口对象共用的CWnd成员函数其中包括CFrameWnd类的对象,CMainWindow就是从CFrameWnd派生出来的

要从MFC程序调用一个常规的Windows API函数,需要在函数名称前添加一个全局运算符:: 例如:::UpdateWindow();

通过生成窗口对象并调用其Create函数,MFC应用程序可以创建一个窗口,在CMyApp::InitInstance中,hello创建了一个CMainWindow对象,CMainWindow的构造函数生成在屏幕上看到的窗口:

Create(NULL,”我的第一个MFC应用程序”);

CPaintDC dc(this);

MFC的CPaintDC类是从MFC的CDC类派生的,CDC类封装了Windows设备环境,以及包含了绘制到屏幕、打印机和其他设备的几十个成员函数

在MFC中如何处理消息呢

在SDK中我们利用的是消息循环和窗口过程函数对消息进行消息处理

在MFC中我们用的是消息映射机制

下面是将消息映射添加到一个类中需要做的全部工作

1>通过将DECLARE_MESSAGE_MAP语句添加到类声明中,声明消息映射

2>通过放置标识消息的宏来执行消息映射,相应的类将在对BEGIN_MESSAGE_MAP和END_MESSAGE_MAP的调用之间处理消息

3>添加成员函数来处理消息

1、构造CWinApp派生类的对象

2、系统调用WinMain()

3、WinMain调用InitInstance,在该函数中创建CFrameWnd派生类对象,调用Create函数创建窗口、调用ShowWindow函数显示窗口。

4、之后内部机制调用Run,接受用户的消息,并将消息导向默认的处理函数。当接收到WM_QUIT消息时,Run内部调用ExitInstance,退出程序。

MFC采用消息映射(Message Map)机制取代C/C++语言中的switch-case结构来处理消息。

消息映射:在MFC中把消息处理函数和它所要处理的特定的消息连接起来的一种机制。

它通过宏来实现消息到成员函数的映射,而且这些函数不必是虚拟的成员函数,这样不需要为消息映射函数生成一个很大的虚拟函数表(V表),节省内存。

MFC消息映射机制包括一组消息映射宏。一条消息映射宏把一个Windows消息和其消息处理函数联结起来。

MFC应用程序框架提供了消息映射功能。

在类的实现源文件中用BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()宏来定义消息映射。

在类定义的结尾用DECLARE_MESSAGE_MAP()宏来声明使用消息映射。

Hello的CmainWindow类只处理一种消息类型—WM_PAINT,因此其消息映射的实现如下所示:

BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd);

ON_WM_PAINT()

END_MESSAGE_MAP()

BEGIN_MESSAGE_MAP开始了消息映射,并标识了消息映射所属的类和该类的基类

END_MESSAGE_MAP()结束消息映射

ON_WM_PAINT()在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()之间,称做消息条目,在MFC为100多种Window消息提供了宏

afx_msg void OnPaint();

DECLARE_MESSAGE_MAP()

afx_msg 醒目地暗示OnPaint是一个消息处理程序,

DECLARE_MESSAGE_MAP()声明消息映射

MFC把消息主要分为三大类:

(1)、标准Windows消息(WM_XXX)

使用宏:ON_WM_XXX() 特点:有默认的消息处理函数

(2)、命令消息:(WM_COMMAND)

来自于菜单、工具条、按钮等的消息

使用宏: ON_COMMAND(命令按钮标识符ID,消息处理函数)

特点:由用户指定消息处理函数

3、”Notification消息” (通知消息) 由控件产生:

BOOL 布尔值,取值为TRUE或者FALSE

BSTR 32为字符指针

BYTE 8位整数无符号的

COLORREF 32位数值代表一个颜色值

DWORD 32位整数无符号的

LONG 32位整数带符号的

LPCTSTR 32位指针,指向一个常字符串

LPVOID 32位指针,指向一个为指定类型的数据

MFC特有的数据类型:

1>POSITION :一个数值,代表数组或者链表中元素的位置,在MFC中常用于数据处理类

2>LPRECT:32位指针,指向一个不变的矩形区域结构

这是我针对你的问题整理的一些资料 很多 我想删减一些 但我觉得这些都对你很重要

另外,团IDC网上有许多产品团购,便宜有口碑

如果第二个窗体与第一个窗体无关的话,就在第二个窗体的初始化函数中设置;如果有关,就为第二个窗口的类再写一个带参数的构造函数,然后在第一个窗口中建一个带参的类对象,根据传递来的参数在第二个窗体中进行设置

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12182821.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存