Visual C MFCWord下载.docx
《Visual C MFCWord下载.docx》由会员分享,可在线阅读,更多相关《Visual C MFCWord下载.docx(42页珍藏版)》请在冰豆网上搜索。
Win32Dynamic-LinkLibraryWin32的动态连接库
Win32StaticLibraryWin32的静态连接库
一、建一个一般MFC的Windows应用程序,屏幕上出现一个空窗口。
(注意:
以后我们所建的应用程序一般都是此应用程序类型)
1、在E盘建一个文件夹,名为:
vcpp(存放你建的文件)
2、双击桌面上的MicrosoftVisualC++系统:
--->
File--->
New--->
Projects--->
MFCAppWizard(exe)见161页表(解释)-->
输入路径名vcpp(事先建好的文件夹)-->
输入文件名:
显示窗口-->
OK
(MFCAppWizard(exe)应用程序类型为:
一般MFC的Windows应用程序)
3、选SDI---->
一直缺省最后便建立了一个名为:
”显示窗口”的单文档应用程序---->
运行!
便出现一个空窗口。
注意:
见162---166页的制作过程(缺省各界面的情况)。
我们没作任何保存,它自动存在你的文件夹vcpp里,要删除它,找到你的vcpp文件夹里的这个文件就可以删除,以后你的VC++程序文件都要建在这里,千万不要乱建,乱存。
下面是VisualC++开发环境界面:
1、标题栏
2、选单栏
3、工具栏
4、项目工作区窗口
5、输出窗口
6、输出窗口标签
7、状态栏
8、文档窗口
见书第一页:
二、建一个一般MFC的Windows应用程序,屏幕上出现2行字。
1、按上面步骤建一个单文档应用程序名为:
显示2行字
2、在View.cpp中找到OnDraw(CDC*pDC)函数,写:
CStringstr1=“学好VisualC++走遍天下”;
CStringstr2=“改革开放的28年颂歌!
南山学院好!
”;
pDC->
TextOut(0,0,str1);
TextOut(0,20,str2);
运行后窗口显示2行字,如果显示带颜色的图形、文字等,以后会学到。
●OnDraw(CDC*pDC)是视图类中的显示函数
●CDC是设备环境类(在VisualC++5轻松进阶书56页中,有好多它的对象方法),*pDC是CDC的指针对象
●CString是处理字符的类。
●TextOut(x,y,str)是CDC类的显示函数,参数x,y是字符串在窗口中的显示位置。
三、理解程序框架
打开项目工作区里的ClassView或FileView可以看到MFC为我们自动创建了以下几个主要的类:
1、文件名App.h(cpp)应用程序类
CMyApp的基类是CWinApp,而CWinApp的基类又是CWinThread,CWinThread类是用来完成对线程(见后面的名词解释)的控制,包括对线程的创建、运行、终止和挂起等。
它实际上是Windows首先运行的内容,当这个程序开始时,它将会把主窗口放在屏幕上。
C或C++是从main()主函数开始执行,而VC++是从WinMain()函数开始执行,且WinMain()函数就是隐含在此应用程序中。
下面是显示2行字应用程序的头文件和执行文件:
(其他见书170页)
//显示2行字.h:
mainheaderfileforthe显示2行字application
#if!
defined(AFX_2_H__6CF87E54_5FC3_419D_B373_44264BFF449C__INCLUDED_)
#defineAFX_2_H__6CF87E54_5FC3_419D_B373_44264BFF449C__INCLUDED_
#if_MSC_VER>
1000
#pragmaonce
#endif//_MSC_VER>
#ifndef__AFXWIN_H__
#errorinclude'
stdafx.h'
beforeincludingthisfileforPCH
#endif
#include"
resource.h"
//mainsymbols
/////////////////////////////////////////////////////////////////////////////
//CMy2App:
//See显示2行字.cppfortheimplementationofthisclass
//
classCMy2App:
publicCWinApp我们用户的应用程序类CMy2App是从MFC基类
{CWinApp派生来的
public:
CMy2App();
应用程序本身的声明
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CMy2App)//是ClassWizard定义的专门用做虚函数重载的标记
public:
表示该程序块中的虚函数的重载是由ClassWizard
virtualBOOLInitInstance();
自动管理的,用户一般不需要去更改
//}}AFX_VIRTUAL//
//Implementation
//{{AFX_MSG(CMy2App)//是ClassWizard定义的专门用做消息映射声明的
afx_msgvoidOnAppAbout();
//NOTE-theClassWizardwilladdandremovememberfunctionshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG//标记
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.
#endif//!
//其中的一些注释是由MFCAppWizard为用户自动生成的,如果不需要这些//注释,可在应用程序向导的第五步对话框中,将“Wouldyouliketogenerate
//sourcefilecomments?
”项选为“No,thankyou“。
//显示2行字.cpp:
Definestheclassbehaviorsfortheapplication.
stdafx.h"
//预编译处理的头文件
显示2行字.h"
//应用程序类的头文件
MainFrm.h"
//主框架类的头文件
显示2行字Doc.h"
//文档类的头文件
显示2行字View.h"
//视图类的头文件
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
//CMy2App
BEGIN_MESSAGE_MAP(CMy2App,CWinApp)//消息映射开始
//{{AFX_MSG_MAP(CMy2App)//消息映射宏存放区
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)//映射”帮助”选单项中的”关于显示2行//字”命令消息,当用户选择了该命令时,将执行函数OnAppAbout
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG_MAP
//Standardfilebaseddocumentcommands
ON_COMMAND(ID_FILE_NEW,CWinApp:
:
OnFileNew)//映射”文件”选单项中的”新建”
//当用户选择了”新建”时,将相应执行CWinApp:
OnFileNew
ON_COMMAND(ID_FILE_OPEN,CWinApp:
OnFileOpen)//映射”文件”选单项中的”打开”
//当用户选择了”打开”时,将相应执行CWinApp:
OnFileOpen
//Standardprintsetupcommand
ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:
OnFilePrintSetup)
END_MESSAGE_MAP()//消息映射宏存放区结束
//CMy2Appconstruction
CMy2App:
CMy2App()//构造函数,变量赋初值一般都在这里
{
//TODO:
addconstructioncodehere,
//PlaceallsignificantinitializationinInitInstance
}
//TheoneandonlyCMy2Appobject
CMy2ApptheApp;
//定义的一个应用类对象,表示一个实例
//CMy2Appinitialization
BOOLCMy2App:
InitInstance()
AfxEnableControlContainer();
//若用户在MFCAppWizard的第三步中,选中了
//“ActiveXControls”则表示所创建的应用程序支持ActiveX控件
//Standardinitialization
//Ifyouarenotusingthesefeaturesandwishtoreducethesize
//ofyourfinalexecutable,youshouldremovefromthefollowing
//thespecificinitializationroutinesyoudonotneed.
//若用户在MFCAppWizard的第四步中,选中了”3Dcontrols”,则表示所创建的应用程序支持//Windows95版本前的3D控件风格。
(对下面2条)
#ifdef_AFXDLL
Enable3dControls();
//CallthiswhenusingMFCinasharedDLL使用动态的3D控件
#else
Enable3dControlsStatic();
//CallthiswhenlinkingtoMFCstatically使用静态的3D控件
//Changetheregistrykeyunderwhichoursettingsarestored.
Youshouldmodifythisstringtobesomethingappropriate
//suchasthenameofyourcompanyororganization.
SetRegistryKey(_T("
LocalAppWizard-GeneratedApplications"
));
//在Windows系统注册表//中登记应用程序的主键值,以便将一些与应用程序相关的参数存放在该主键值下
LoadStdProfileSettings();
//LoadstandardINIfileoptions(includingMRU)//从注册表中
//调入应用程序的一些标准参数,其中包括最近文件列表的文件名
//Registertheapplication'
sdocumenttemplates.Documenttemplates
//serveastheconnectionbetweendocuments,framewindowsandviews.
//以下:
若用户在MFCAppWizard的第一步中,选择了“Singledocument”类型,则进行下
//列的单文档模板的创建及其初始化操作。
CSingleDocTemplate*pDocTemplate;
//定义一个单文档模板指针变量
pDocTemplate=newCSingleDocTemplate//登记并创建单文档应用程序模板
(IDR_MAINFRAME,//选单,快捷键等的资源标识号
RUNTIME_CLASS(CMy2Doc),//文档类
RUNTIME_CLASS(CMainFrame),//mainSDIframewindow主框架窗口类
RUNTIME_CLASS(CMy2View));
//视图类
AddDocTemplate(pDocTemplate);
//向应用程序添加文档模板
//Parsecommandlineforstandardshellcommands,DDE,fileopen
//分列命令行标准命令如DDE,文件打开等。
CCommandLineInfocmdInfo;
ParseCommandLine(cmdInfo);
//Dispatchcommandsspecifiedonthecommandline
//传送命令行指定的命令,并执行相应的操作
if(!
ProcessShellCommand(cmdInfo))
returnFALSE;
//Theoneandonlywindowhasbeeninitialized,soshowandupdateit.
//对主框架窗口进行初始化以便显示和更新
m_pMainWnd->
ShowWindow(SW_SHOW);
UpdateWindow();
returnTRUE;
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog//基类CDialog派生出的CAboutDlg类
{//该函数与前面几个类不同的是,该类增加AFX_DATA机制,
//称为数据映射机制,这个机制是用来实现DDX(数据交换)
///DDV(数据校验),它能使应用程序与用户交互功能的实现
//变得更为容易和直接。
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//枚举类型IDD_ABOUTBOX的映射宏
//}}AFX_DATA
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
//DDX/DDVsupport数据交换/校验
//}}AFX_VIRTUAL//虚函数
protected:
//{{AFX_MSG(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG
CAboutDlg:
CAboutDlg():
CDialog(CAboutDlg:
IDD)
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
voidCAboutDlg:
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
//数据交换函数
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)//是ClassWizard定义的专门用做消息映射的标记,
//Nomessagehandlers//表示该程序块中的消息映射函数是由
//}}AFX_MSG_MAP//ClassWizard来自动管理的,用户一般不需要更改
END_MESSAGE_MAP()
//Appcommandtorunthedialog
voidCMy2App:
OnAppAbout()//执行缺省对话框函数
CAboutDlgaboutDlg;
//定义的CAboutDlg对象
aboutDlg.DoModal();
//调用相应的库函数,显示CAboutDlg对话框
//CMy2Appmessagehandlers
2、CMainFrm.h(cpp)主框架类(详解略可见175页)
CMainFrm的基类是CFrameWnd,该类是显示主窗口,是我们找到菜单栏、窗口的标题栏以及工具栏的地方,主窗口对象负责窗口中出现的、围绕操作领域的一切,如:
图画、文本和其它图形,这个区域称为窗口中的客户区。
它用于管理应用程序窗口显示如:
标题栏、菜单栏、工具栏、状态栏、控制菜单、控制按钮等,它是所有MDI(多文档)和SDI(单文档)子窗口的包容器。
3、文件名View.h(cpp)视图类(详解略可见172页)
CMyView的基类是CView,处理客户区,是我们在程序中设置数据格式及显示数据的位置,如我们在创建一个字处理程序时正在编辑的文本,事实上,视图对象是出现在客户区顶部的窗口本身,用于让用户通过窗口来访问文档、视图类。
4、CMyDoc.h(cpp)文档类(详解略可见170页)
CMyDoc.h(cpp)的基类是CDocument,为程序存储数据,将所有数据存在文档中,而在视图对象中处理并显示。
它包含了应用程序在运行期间