vc 6.0打造单文档界面与多文档界面的编程
- 格式:doc
- 大小:13.95 KB
- 文档页数:8
第8章文档和视图MFC应用程序的核心是文档/视图结构。
在前面章节的学习中,已经接触了不少文档/视图结构的应用程序,本章将详细分析其结构和原理,并进一步学习使用复杂的文档结构、构造更加丰富的视图。
8.1 文档/视图概述使用MFC的AppWizard可以创建三种类型的应用程序:(1)单文档界面的应用程序(SDI:Single Document Interface)(2)多文档界面的应用程序(MDI:Multiple Documents Interface)(3)基于对话框的应用程序(Dialog based)基于对话框的应用程序框架非常简单,由应用程序类、对话框类构成。
通过应用程序类的InitInstance()函数,构造一个模式对话框对象;调用DoModal()函数,让Windows对话框处理程序象通常情况一样接受和分配消息;用户退出对话框后,程序也就结束了。
我们已经知道SDI应用程序由应用程序类(CWinApp)、框架窗口类(CFrameWnd)、文档类(CDocument)、视图类(CView)和文档模板类(CSingleDocTemplate)共同作用。
MDI应用程序与SDI 应用程序的主要差别在于:MDI有CMDIFrameWnd和CMDIChildWnd两个框架窗口类,前一个派生CMainFrame类,负责菜单等界面元素的主框架窗口管理;后一个派生CChildFrame类,负责相应的文档及其视图的子框架维护。
而SDI由框架窗口类CFrameWnd 派生CMainFrame类。
一个文档可以有多个视图,但一个视图只能对应一个确定的文档。
因此,MDI应用程序需要解决的问题是多个文档的数据管理方法。
在MDI应用程序中,文档模板只支持主窗口。
每打开一个新文档时,都调用文档类的成员函数OnNewDocument(),建立一个由CMDIChildWnd派生的新的MDI子窗口,在子窗口中保存已打开的文档,所有这些细节都由MFC库来处理。
vc++6.0入门教程步骤是:(先工程—后文件—编译—连接---运行)1 桌面上的快捷方式如下:双击即可运行2 在所有程序里点击也可以运行:3 即会出现如下界面:4 进入后的界面如下:5 将每日提示关闭既可:6 建立一个工程,“文件”——“新建”1,建立一个工程,“文件”——“新建”,出现下面界面:选择“Win32 Console Application”(控制台应用程序,左边倒数第三个),命名工程名称,选择保存位置,点击“确定”,进入下一步,看到如下提示界面:建立一个空工程,对应其他需要的你一可以建立别的工程;点击“完成”,之后:显示你创建的工程的信息。
2,再在有一个的工程的条件下,我们再建立一个源文件;“文件”——“新建”(快捷键Ctri+N),出现:建立源文件,选择“C++ Source ”,一般都是建立这种文件的(适用在当文件中适用)如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用)命名,文件名称,点击“确定”,之后:进入编辑区,在主界面编写代码:如下编写完之后呢:可以按编译按钮调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接),最后,点运行按钮,就可以运行了。
如果是您有代码如:cpp文件,或.h 文件,想添加都VC6.0里来测试的话,可以这样做:首先,要理解一下文件扩展名为:cpp和.h文件扩张名是.h,代表的是头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等;文件扩张名为,cpp的,是C++中的源文件,也是最常用到的文件,每建立一个工程都要至少一个源文件(至少要有一个函数入口——主函数main() ),包含了核心代码;建立与运行说明:(以VC 6.0编译器为例,其他编译器类似)首先,打开VC 6.0编译环境;在菜单栏——文件(的下拉菜单中选择“新建”),在弹出的选择窗口中,选择Win32 Console Application(控制台应用程序) ,在填写工程名称,选择一个程序保存路径,点击“完成”,查看工程信息。
Visual C++ 6.0使用说明在VC6.0下,必须先创建工程(Project),然后再添加源文件。
一个真正的软件,往往需要多个源文件和多种资源,例如图片、视频、控件等,通常是把它们放到一个文件夹下,进行有效的管理。
你可以把工程理解为这样的一个文件夹,IDE通过工程来管理这些文件。
工程有不同的类型,例如开发“黑窗口”的控制台程序,需要创建Win32 Console Application工程;开发带界面的GUI程序,需要创建Win32 Application工程。
1) 新建Win32 Console Application工程打开VC6.0,在菜单栏中选择“文件-> 新建”,或者Ctrl+N,弹出下面的对话框:切换到“工程”选项卡,选择“Win32 Console Application”,填写工程名称和路径,点击“确定”,会弹出一个对话框询问类型,这里选择“一个空工程”,如下图所示:点击“完成”按钮完成工程的创建。
2) 新建C源文件在菜单栏中选择“文件-> 新建”,或者Ctrl+N,弹出下面的对话框:切换到“文件”选项卡,选择“C++ Source File”,填写文件名,点击确定完成。
该步骤是向刚才创建的工程添加源文件。
3) 编写C语言代码在工作空间中可以看到刚才创建的工程和源文件,如下图所示:双击hello.c,进入编辑界面,输入上节中的代码。
4) 编译并运行代码在“组建”菜单中找到编译、组建和运行的功能,如下图所示:更加简单的方法是使用快捷方式,如下图所示:保存编写好的源代码,点击运行按钮或Ctrl+F5,如果程序正确,可以看到运行结果,如下图所示:注意:编译生成的.exe 文件在工程目录下的Debug文件夹内。
以上面的工程为例,路径为 E:\cDemo,打开看到有一个Debug文件夹,进入可以看到cDemo.exe。
在Debug目录中还会看到一个名为hello.obj 的文件。
VC++6.0操作简介一、 VC++6.0VC++6.0二、 VC++6.0环境的基本操作1. 建立应用程序操作步骤如下:(1) 关闭 当前工作区:【文件】→【关闭 工作区】 (必要时)(2) 建立工程:【文件】→【新建】(出现“新建”对话框)在“新建”对话框中选中“工程”选项卡→选中其中的“Win32 Console Application”项→选择存储“位置”→输入工程名→单击“确定”按钮(出现“Win32Console Application”对话框)在“Win32 Console Application”对话框中选择“An empty project”选项→单击“完成”按钮注意:在操作过程中,如果出现提示性对话框,可根据具体情况按“确定”或“取消”按钮。
至此,一个新的工程已经建立,接下来,可以在该工程中建立文件或(和)将已经存在的文件添加到工程中:在工程中新建文件:【工程】→【添加工程】→【新建】(出现“新建”对话框)在“新建”对话框中选中“文件”选项卡→选中其中的“C++ Source File”或者“C/C++ Header File”项→选择新建的置(目录)→输入文件名→单击“确定”按钮→输入文件内容。
例如,新建的名为M1.cpp的源文件内容如下:向工程中添加文件【工程】→【添加工程】→【Files…】(出现“插入文件到工程”对话框)在“插入文件到工程”对话框中选中要插入的文件→选择文件要插入的工程(插入到)→单击“确定”按钮2.编辑文件操作步骤如下:在“工作区”窗口中选择“FileView”选项卡→展开相应工程的文件分支(工程名files)→双击类要编辑的文件名(此时,相应文件的内容已经显示在编辑窗口中)→对文件进行编辑3.编译、构建与运行应用程序编译源文件:在“工作区”窗口选择“FileView”选项卡→选择要编译的源文件→【编译】→【编译xx】构建可执行文件:设置活动工程(工作区中有多个工程时):【工程】→【设置活动工程】→【xx (工程名)】【编译】→【构建xx.exe】运行应用程序:设置活动工程(工作区中有多个工程时):【工程】→【设置活动工程】→【xx (工程名)】【编译】→【执行xx.exe】4.在工程中新建类(1)新建类:设置活动工程(工作区中有多个工程时需要此步)。
图1-1Visual C++界面开项目工作区文件时其他文件随即会自动打开。
在此文件夹下还会创建 Res(资源)、Debug(调试)、Release(发行)等子文件夹。
2.2编辑 在编辑窗口打开、浏览文件、输入、修改、复制、剪切、粘贴、查找、替换、撤销等操作,可以通过菜单完成,也可以通过工具栏按钮完成,这些与 Word 之类的 windows 编辑器用法完全相同,这里就不再重复叙述了。
2.3辅助VC 不仅提供了“语法着色”帮助我们阅读程序,还可以通过一些快捷键检查常见的括号不匹配错误。
MSDN 也可以在编辑过程中提示存在的变量名、函数名。
很多程序员借助类似 Visual Assist X 的工具辅助开发,减少程序出错的可能性。
3.开发 C 程序3.1开发单个 C 语言程序1. 创建一个工作文件夹。
由于开发过程会产生一系列文件,建议每开发一个新的 C 程序都创建一个工作文件夹。
还可以将所有工作文件夹集中到一起,如E:\LXH\EX01-01 、E:\LXH\EX03-02 等。
2. 启动 Visual C++。
3. 新建一个 C 语言源程序。
选择菜单:File 下的 New 菜单项,出现如图 1-2 所示 new(新建)对话框。
图1-2选择菜单File下的New菜单项选择 Files标签下的 C++Source File 在“E:\LXH\EG01-01”文件夹中创建C 程序:eg01-01.c,如图 1-3 所示。
图1-3Files标签4. 输入、编辑源程序。
注意不要输入中文标点符号,要及时按 Ctrl+S 保存文件,如图 1-4 所示。
图1-4输入源程序5.编译、连接。
点击“BuildMiniBar”工具栏上的“Build”按钮进行编译、连接。
也可以选择菜单 Build 下的 Build (F7) 菜单项或Rebuild All菜单项。
更简捷的方法是直接按 F7 功能键。
Visual C++将提示创建默认工作区,如图 1-5 所示。
vc++6.0打造单文档界面与多文档界面的编程VC++6中,可以利用MFC向导分别创建单文档和多文档界面的应用程序。
有了这两种类型的应用程序,您就可以实现简单的记事本,写字本和WORD的功能了。
以下介绍一个在文档中输出一段文字,点击菜单项,输入文字内容按OK按钮后可以更改输出的文字。
1.首先,点击MFC向导,选择多文档视图类型,新建一个名为MdiDemo的工程。
2.新建一个对话框。
上面放置一个Static控件和一个Edit控件,按CTRL+W,将Edit控件改成m_Caption.3.新建一个类与对话框对应,如CDlgDemo类。
4.在菜单中,增加一项Demo,并增加菜单项Test.按CTRL+W,并双击后,在消息的上面选择Doc,下面选择Command,双击就产生了对应的事件处理函数。
5.在MdiDemoDoc.cpp类中输入以下:// DlgDemo.cpp : implementation file//#include "stdafx.h"#include "MdiDemo.h"#include "DlgDemo.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////// //////////// CDlgDemo dialogCDlgDemo::CDlgDemo(CWnd* pParent /*=NULL*/): CDialog(CDlgDemo::IDD, pParent){//{{AFX_DATA_INIT(CDlgDemo)m_Caption = _T("");//}}AFX_DATA_INIT}void CDlgDemo::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDlgDemo)DDX_Text(pDX, IDC_EDIT1, m_Caption);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDlgDemo, CDialog)//{{AFX_MSG_MAP(CDlgDemo)// NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////// //////////// CDlgDemo message handlers6.在MdiDemoView.cpp中输入以下内容:// MdiDemoView.cpp : implementation of the CMdiDemoView class//#include "stdafx.h"#include "MdiDemo.h"#include "MdiDemoDoc.h"#include "MdiDemoView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////// //////////// CMdiDemoViewIMPLEMENT_DYNCREATE(CMdiDemoView, CView)BEGIN_MESSAGE_MAP(CMdiDemoView, CView)//{{AFX_MSG_MAP(CMdiDemoView)// NOTE - the ClassWizard will add and remove mapping macros here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView construction/destructionCMdiDemoView::CMdiDemoView(){// TODO: add construction code here}CMdiDemoView::~CMdiDemoView(){}BOOL CMdiDemoView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView drawingvoid CMdiDemoView::OnDraw(CDC* pDC){CMdiDemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCRect crect;GetClientRect(&crect);CSize sizeClient=crect.Size();CString str=pDoc->strCaption;CSize sizeTextExtent=pDC->GetTextExtent(str);pDC->TextOut((sizeClient.cx-sizeTextExtent.cx)/2,(sizeClient.cy-sizeTextExtent.cy)/2,str);}/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView printingBOOL CMdiDemoView::OnPreparePrinting(CPrintInfo* pInfo) {// default preparationreturn DoPreparePrinting(pInfo);}void CMdiDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CMdiDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView diagnostics#ifdef _DEBUGvoid CMdiDemoView::AssertValid() const{CView::AssertValid();}void CMdiDemoView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CMdiDemoDoc* CMdiDemoView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMdiD emoDoc)));return (CMdiDemoDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////// //////////// CMdiDemoView message handlers6。
VC++6.0中如何编译运行C语言的多个源文件程序多个源文件的编译运行在源程序过多的情况下,单个源文件往往难于检查错误,因此在程序设计时,往往是由几个人各自独立编写不同的程序,显然这些程序是不能写在一起进行编译的,这时就需要建立项目工作区来完成几个独立程序的编译,具体方法如下。
打开VC++6.0,选择“file”→“new”打开如图1所示(图1)选择“workespaces”项,并在“workespaces name”项目下输入“file”(可随意)如图2所示(图2)单击“OK”,打开如图3所示(图3)在左侧的“Workespaces”显示了新建立的工作区选择“file”→“new”打开如图9所示,在“Projects”项目下选择“W in32 ConsoleApplication”项,并在“project name”项目下输入工程名称,如“file”,选择“Add to current workespaces”项,如图4所示(图4)单击“OK”,打开如图5所示(图5)选择“An empty project”项,单击“Finish”,打开如图6所示(图6)单击“OK”,打开如图7所示(图7)在左侧的“Workespaces”显示了新建立的工程选择“file files”→“Source”→“new”,打开如图8所示(图8)点击“C++ Source File”,然后到File中输入如file1.c,最后点击OK。
以同样的方式在这个文件下建立两个文件,打开如图17所示(图8)输入源代码1和源代码2,源代码1:#include<stdio.h>int A;int main(){int power(int n);int b=3,c,d,m;printf("enter the number a and its power m:\n");scanf("%d,%d",&A,&m);c=A*b;printf("%d*%d=%d\n",A,b,c);d=power(m);printf("%d**%d=%d\n",A,m,d);return 0;}源代码2:extern A;int power(int n){int i,y=1;for(i=1;i<=n;i++)y*=A;return(y);}(注:此程序完成其他文件外部变量的使用)选择“Build”→“Build file.exe”(或按F7键),打开如图9所示(图9)在下端的输出窗口会有错误和警告的提示,如果没有错误选择“Build”→“Execute file.exe”(或按Ctrl+F5)输入13,3即可出现运行结果,如图10所示(图10)。
vc6 多文件编译方法一、什么是多文件编译多文件编译是指将一个程序拆分成多个源文件进行编译,然后再将编译后的目标文件链接起来生成可执行文件。
这种方法可以提高代码的可读性和维护性,使程序的开发更加灵活和高效。
二、多文件编译的步骤1. 创建工程在VC6中,首先需要创建一个工程,选择“文件”菜单下的“新建”->“项目”->“Win32控制台应用程序”,然后填写工程名称和存放路径,点击“确定”按钮即可创建一个新的工程。
2. 添加源文件在创建好的工程中,可以通过“项目”菜单下的“添加到项目”选项来添加源文件。
选择“添加到项目”后会弹出一个对话框,在对话框中选择要添加的源文件并点击“确定”按钮即可将源文件添加到工程中。
3. 设置编译选项在VC6的工具栏中,点击“项目”->“设置”菜单项,弹出的对话框中选择“链接”选项卡,然后在“项目文件”列表中选择要编译的源文件。
在“设置”对话框中,还可以设置编译器的相关选项,如编译器的优化级别、生成调试信息等。
4. 编译工程在设置好编译选项后,点击工具栏上的“生成”按钮或选择“生成”->“生成解决方案”菜单项来开始编译工程。
编译过程中,VC6会逐个编译源文件,并生成对应的目标文件。
5. 链接目标文件编译完成后,VC6会自动调用链接器将所有的目标文件链接起来生成可执行文件。
链接器会根据代码之间的引用关系来解析符号,并将它们连接在一起。
6. 运行程序链接完成后,可以通过点击工具栏上的“运行”按钮或选择“调试”->“开始执行”菜单项来运行程序。
VC6会自动启动调试器,并执行生成的可执行文件。
三、常见问题及解决方法1. 无法找到源文件在添加源文件时,如果出现“无法找到源文件”的错误提示,可以检查源文件是否在指定的路径下,并确保路径名称的正确性。
2. 编译错误在编译过程中,可能会出现各种编译错误,如语法错误、类型不匹配等。
这时需要仔细检查错误信息,并逐个解决错误。
“网站设计”和“游戏开发”。
然后给每个窗体分别编写下面的代码。
Form1窗体代码为Private Sub Form_Load()Combo1.AddItem "男"Combo1.AddItem "女"End SubPrivate Sub Command1_Click()Me.HideForm2.ShowEnd SubPrivate Sub Command2_Click()EndEnd SubForm2窗体代码为Private Sub Command1_Click()Me.HideForm1.ShowEnd SubPrivate Sub Command2_Click()MsgBox "欢迎" + Form1.Text1.Text + "加入", "注册成功"EndEnd Sub7.3.2 多文档界面1.单文档界面与多文档界面在实际应用中,Windows应用程序主要有两种界面:单文档界面(Single Document Interface,SDI)和多文档界面(Multiple Document Interface,MDI)。
单文档界面并不是指只有一个窗体的界面,单文档界面的应用程序可以包含多个窗体,但各个窗体是相互独立的,它们在屏幕上独立显示、最大化或最小化,与其他窗体无关。
单文档界面应用程序在任何时候只能打开一个文档,要打开另一个文档界面,必须先关闭原来打开的文档界面。
前面我们创建的应用程序都属于单文档界面应用程序。
多文档界面是指应用程序由多个窗体界面组成,但这些窗体不是独立的。
其中只有一个窗体被称为MDI父窗体(简称MDI窗体),其他窗体被称为MDI子窗体。
子窗体的活动范围限制在MDI窗体中,不能将其移动到MDI窗体之外,运行时可以同时打开多个文档界面。
如果MDI子窗体有菜单,则当MDI子窗体为活动窗体时,子窗体的菜单将自动取代MDI窗体的菜单。
vc++6.0的界面设计与资源编辑器vc++6.0的界面设计与资源编辑器一、资源与界面:windows95/98将应用程序常用到的一些“数据”归纳定义成可共享的资源,例如vc++6.0中将某些静态的、可归类的和可共享的数据以资源形式处理,主要包括菜单、图标、对话框、位图、快捷键、工具栏、光标、描述信息和字符串表等。
以资源作为线索,增强了编程的逻辑条理,简化了开发过程。
其中还为编辑菜单、对话框、工具栏等资源的程序界面设计提供了直观、可视的设计方法,即程序的界面设计在很大程度上就是对相关资源的编辑处理。
因而熟练掌握资源编辑器,对界面设计及整个应用程序资源的逻辑关系都是非常重要的。
二、资源管理:资源管理包括各种资源的创建和维护,vc++6.0中提供了一整套处理资源的方法,通过workspace 的“resource view”(资源视图)的导航,可以创建资源或激活各种资源相应的资源编辑器以执行可视化编辑。
1.打开应用程序:fileàopen workspace2.浏览应用程序的资源:调入应用程序后,在workspace窗口的“resourceview”中显示应用程序所涉及资源的列表。
如果workspace 窗口未打开,则在“view”下拉菜单中选择“workspace”选项。
accelearator(快捷键)、dialog(对话框)、icon(图标)、menu(菜单)、string table(字符串表)、toolbar(工具栏)、version(描述)。
各资源类中包含有具体资源项,这些资源项组成了应用程序自己的资源,程序员也可添加新的资源或资源项。
3.增加新资源:增加新资源的常用方法是从“insert”下拉菜单中选择“resource”选项,或右击workspace中资源项,在vc++6.0的快捷菜单中,选择“insert”项。
选择后,vc++6.0显示“insert resource”对话框,选择所需资源以增加,同时,并新建一个名为“idb_xxx”的资源项。
在VC++6.0中建立多文件项目的方法方法一:1. 分别建立若干个C++ Source File(C++源程序文件),每个文件单独编写、存盘。
2. 建立一个“项目文件”。
选择“文件/新建”菜单,在“新建”对话框中,点击“工程”选项卡下的“win32 console application”(WIN32控制台程序),然后输入工程名称ff和位置C:\ABC\ff,单击“确定”按钮,建立一个空工程ff.c,并单击“完成”后,再单击“确定”按钮。
3. 将源文件放到项目文件中。
选择“工程/增加到工程/文件”菜单,在出现的对话框中,同时选中欲加入到工程中的所有C程序源文件,单击“确定”按钮。
4. 编译、连接项目文件。
单击编译按钮、运行按钮即可。
方法二:1.选择“文件/新建”菜单,在“新建”对话框中,点击“文件”选项卡下的“C++ Source File”,然后输入文件名file1.c及位置C:\ABC,点击“确定”按钮,建立file1.c源文件并编译(例如file1.c为如下的示例程序:)/* file1.c */#include <stdio.h>int m=30;extern a;void B(void){int b=20;m=m+a;printf( "Hello! Running B() Now!\n");printf( "a=%d b=%d m=%d in B()\n",a,b,m); return;}void A(void);int main(void){printf( "Hello! Running main() Now!\n");printf( "a=%d m=%d in main()\n",a,m);A();B();printf( "Hello! Return to main() Now!\n");printf( "a=%d m=%d in main()\n",a,m);getch();return 0;}2. 选择“文件/新建”菜单,在“新建”对话框中,点击“文件”选项卡下的“C++ Source File”,然后输入文件名file2.c及位置C:\ABC,并勾选“添加到工程[A]”前的复选框,将file2.c添加到工程file1中,再点击“确定”按钮,建立file2.c源文件并编译(例如file2.c为如下的示例程序:)/*file2.c*/#include <stdio.h>extern m;int a=50;void A(void){int b=10,a=200;m=m+b;printf( "Hello! Running A() Now!\n");printf( "a=%d b=%d m=%d in A()\n",a,b,m); return;}3. 此时,界面如下:即可执行file1.exe得到运行结果。
怎么用vc6.0去写c语言程序我发现很多老师上课还在用tc来叫你们写c语言程序,我们知道tc有很多缺点,第一它不支持鼠标,更为重要的是它不支持复制(ctrl+c)和粘贴(ctrl+v)以及剪切(ctrl+x)等快捷键操作,这是致命的缺点,因为我们到了后面当我们的代码达到100行、1000行、甚至上万行的时候,你就会发现tc是多么的不靠谱,好了,我简单讲讲怎么用vc去写一个c语言程序。
一:建立空的程序:1.新建文件夹,改名为你自己想要的名字,比如:TEST1。
变成2.打开文件夹,新建一个文本文档,把后缀名改成.c文件就行了。
变成:中间会弹出对话框,此时你只要点击“是”就行了。
就会成这样:3.现在有两种打开方式,先介绍第一种:鼠标左键将你建立的“新建文本文档.c”文件拖入你的vc6.0软件即可打开,第二种方法我就不介绍了,因为vc软件跟win7、win8存在兼容性问题,xp系统可以。
你们会这一种方法就行了。
接下来就进入了这个界面:4.在代码编辑区输入代码后,此时你得运行(图标像一个感叹号)是灰色的,只有当你编译以后,它才会变成红色的,当你点击编译后,会出现一系列对话框,此时你不需要管,只点击“是”就行了,有的可能还会出现“与系统不兼容问题”,这些你都先别管,点击“允许程序运行”就行了。
此时,你的灰色的运行突变就会变成红色,就行这样:注意:你的错误提示栏会报告你的错误,你按f4,在代码编辑区就会在你错误的那一栏出现一个箭头,并且在错误提示栏会显示你的错误,当然,这些错误提示都是英文的,所以……你懂的,学英语也是必要的。
比如:刚开始,你们就需要知道这么多吧,到了后来,我有时间会交大家如何去调试,最后,保存(crtl+s),就行了;最后解释一个问题,为什么我刚开始新建一个文件夹,然后再新建一个文本文档,再改后缀名,因为,当你保存后,你会发现,你的程序还有很多其他类型(后缀名不同)的文件,你如果不用文件夹保存,会显得很乱,这是我个人总结的,你们如果觉得不好也可以不采用,直接新建文本文档,再改名。
vc++6.0打造单文档界面与多文档界面的编程VC++6中,可以利用MFC向导分别创建单文档和多文档界面的应用程序。
有了这两种类型的应用程序,您就可以实现简单的记事本,写字本和WORD的功能了。
以下介绍一个在文档中输出一段文字,点击菜单项,输入文字内容按OK按钮后可以更改输出的文字。
1.首先,点击MFC向导,选择多文档视图类型,新建一个名为MdiDemo的工程。
2.新建一个对话框。
上面放置一个Static控件和一个Edit控件,按CTRL+W,将Edit控件改成m_Caption.3.新建一个类与对话框对应,如CDlgDemo类。
4.在菜单中,增加一项Demo,并增加菜单项Test.按CTRL+W,并双击后,在消息的上面选择Doc,下面选择Command,双击就产生了对应的事件处理函数。
5.在MdiDemoDoc.cpp类中输入以下:// DlgDemo.cpp : implementation file//#include "stdafx.h"#include "MdiDemo.h"#include "DlgDemo.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CDlgDemo dialogCDlgDemo::CDlgDemo(CWnd* pParent /*=NULL*/): CDialog(CDlgDemo::IDD, pParent){//{{AFX_DATA_INIT(CDlgDemo)m_Caption = _T("");//}}AFX_DATA_INIT}void CDlgDemo::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDlgDemo)DDX_Text(pDX, IDC_EDIT1, m_Caption);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDlgDemo, CDialog)//{{AFX_MSG_MAP(CDlgDemo)// NOTE: the ClassWizard will add message map macros here//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CDlgDemo message handlers6.在MdiDemoView.cpp中输入以下内容:// MdiDemoView.cpp : implementation of the CMdiDemoView class//#include "stdafx.h"#include "MdiDemo.h"#include "MdiDemoDoc.h"#include "MdiDemoView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CMdiDemoViewIMPLEMENT_DYNCREATE(CMdiDemoView, CView) BEGIN_MESSAGE_MAP(CMdiDemoView, CView)//{{AFX_MSG_MAP(CMdiDemoView)// NOTE - the ClassWizard will add and remove mapping macros here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMdiDemoView construction/destruction CMdiDemoView::CMdiDemoView(){// TODO: add construction code here}CMdiDemoView::~CMdiDemoView(){}BOOLCMdiDemoView::PreCreateWindow(CREATESTRUCT&a mp; cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CMdiDemoView drawingvoid CMdiDemoView::OnDraw(CDC* pDC){CMdiDemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCRect crect;GetClientRect(&crect);CSize sizeClient=crect.Size();CString str=pDoc->strCaption;CSize sizeTextExtent=pDC->GetTextExtent(str);pDC->TextOut((sizeClient.cx-sizeTextExtent.cx)/2,(size Client.cy-sizeTextExtent.cy)/2,str);}/////////////////////////////////////////////////////////////////////////////// CMdiDemoView printingBOOL CMdiDemoView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CMdiDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CMdiDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////////////////// CMdiDemoView diagnostics#ifdef _DEBUGvoid CMdiDemoView::AssertValid() const{CView::AssertValid();}void CMdiDemoView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CMdiDemoDoc* CMdiDemoView::GetDocument() //non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMdiDemoDoc)));return (CMdiDemoDoc*)m_pDocument;}#endif //_DEBUG///////////////////////////////////////////////////////////////////////////// // CMdiDemoView message handlers6。
按“CTRL+F5”即可运行。