欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第三章C语言编辑器设计与实现.docx

    • 资源ID:13447772       资源大小:468.54KB        全文页数:19页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第三章C语言编辑器设计与实现.docx

    1、第三章C语言编辑器设计与实现第三章 单文档应用程序在本学习情境中主要学习:(1)CEditView的使用(2)TC环境配置与TCC的使用(3)文件的读写操作(4)顶层菜单、快捷菜单和图标区菜单的使用(5)工具栏、状态栏的使用3.2C语言编辑器设计与实现3.2.1C语言编辑器框架生成在标准的SDI应用程序向导中,CXXXView类的基类是CView类,在设计C语言编辑器中可以将基类修改为CEditView,如图所示。图 新建CEditPad工程图 选择单文档应用程序框架图 修改CCEditPadView类的基类为CEditView单击Finish按钮,完成工程的创建。编译、运行程序,如图所示。

    2、图 程序运行结果 在工程的ResourceView中,可以将程序的图标换掉,默认情况下如图所示。图 工程默认图标(1)将想要更换的图标拷贝到工程res文件夹中,删除掉原来的NotePad.ico文件,将自己的ICON图标命名为CEditPad.ico即可。(2)或者使用Import菜单,将想要更换的图标导入到工程中,如图所示。删除原来的IDR_MAINFRAME图标,将自己的图标命名为IDR_MAINFRAME即可。图 导入工程图标3.2.2程序菜单设计菜单是windows应用程序中非常重要的人机界面,是用户与应用程序之间进行交流的主要方式之一,也是用户界面对象中的一个最重要的对象。菜单是一系

    3、列命令的列表,用户能够选中其中的菜单命令并执行相应任务。仍然使用我们前面生成的NotePad程序,编辑由AppWizard自动生成的菜单资源。要编辑菜单资源:(1) 选择项目工作区的ResourceView标签,切换到资源视图。(2) 选择菜单资源类型。(3) 选定菜单资源IDR_MAINFRAME,双击该项或单击鼠标右键然后在弹出菜单中选择Open选项。Visual Studio将弹出菜单编辑窗口,显示菜单资源IDR_MAINFRAME,其中IDR_MAINFRAME是由AppWizard在创建该程序时自动生成的。图 显示工程菜单资源(4)要删除某个菜单项或弹出菜单,可用鼠标单击该菜单或用上

    4、下光标键来回选择,然后按Del键删除。(5)要插入新菜单项,可选定窗口中的空白菜单框后按回车(或直接用鼠标双击该空白框),Visual Studio弹出Properties(属性)对话框。属性对话框用于输入菜单项的标题、标识符、菜单项在状态栏上显示的提示(Prompt),并为该菜单提供属性调整。也可以在选择一个已有的菜单项时按Ins键,以在该菜单项上方插入一个空白菜单项,然后双击该菜单项进行编辑。要插入一个分隔线,只需将菜单项的Seperator属性打开即可,如图所示。图 增加一个分割线双击空白框,Visual Studio弹出菜单Properties对话框,在ID的下拉列表中选择ID_EDI

    5、T_FIND,即将该菜单绑定到ID_EDIT_FIND,即可实现查找功能。图 增加一个查找菜单图增加替换菜单图 增加全选菜单图 增加时间/日期菜单为了能够实现编辑区的代码编译链接,增加一个程序的顶层菜单,并增加一个编译链接的子菜单,如图所示。图 增加一个程序顶层菜单图 增加编译链接子菜单在CCEditPadView类中为编译链接菜单增加消息映射函数OnComplie,如图所示。图 增加菜单Command映射函数图 CCEditPadView类函数列表3.2.3程序框架实现为了模仿VC的输出框,引用开源的SIZECBAR类。首先将类的头文件和源文件拷贝到工程文件夹中,如图所示。图 将文件拷贝到工

    6、程文件夹中将文件添加到工程中,如图所示。图 Add Files to Projects图 Insert Files into Project图 增加ID_WNDOUTBAR的StringTable 在CMainFrame类中增加编译输出条,首先在类中增加mybar类头文件和定义对象m_CtrlBar,然后在类的OnCreate函数中将其创建出来,如图所示。图 包含头文件并增加对象图 产生m_CtrlBar对象 /产生程序的输出窗口 if(!m_CtrlBar.Create(程序输出,this,CSize(100,100),TRUE,ID_WNDOUTBAR) TRACE0(Failed to

    7、create outbarn); return -1; / fail to create m_CtrlBar.SetBarStyle(m_CtrlBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); m_CtrlBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_CtrlBar,AFX_IDW_DOCKBAR_BOTTOM);在mybar类中增加用于接收输出的编辑框对象m_wndOutPut,并定

    8、义其UID,如图所示。图 定义m_wndOutPut对象和UID在mybar类的OnCreate函数中生成对象,并在OnSize函数中设置其大小,如图所示。图 生成m_wndOutPut对象 /创建程序的输出窗口 if(!m_wndOutPut.Create(WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN ,CRect(0,0,0,0),this,ID_EDITCTRL) TRACE0(Failed to create OutPut windown); return -1; / fail to create 图 设置编辑框大小 /设置编

    9、辑框的大小与myBar窗口大小一致 CRect rc; GetClientRect(&rc); m_wndOutPut.MoveWindow(&rc);运行结果如图所示。图 程序运行结果3.2.4 TC环境配置与TCC使用 为了能够正常使用TC中的文件,需要在系统环境变量path中将TC的配置文件加入。右键单击我的电脑-选择属性菜单,选择高级选项卡,单击环境变量按钮,在系统变量和用户变量中的Path变量后面加上 TC的路径:c:tc;c:tcinclude;c:tclib,如图所示。图 加入环境变量广义的编译器,包括了代码编译器(compiler),目标文件链接器(linker),库文件管理工

    10、具(如tc的tlib,gcc的ar)。对于一个广义的编译器来说以下几个部分是必备的:piler,2.linker,3.系统提供的头文件和库文件。狭义的编译器,则仅指compiler。compiler只负责将源代码,即.c/.cxx/.cpp文件编译成为目标文件.o/.obj。编译过程的输入是源文件,包括自己书写的.c和.h以及系统提供的.h文件,编译的输出是目标文件。需要强调的一点是,在compile阶段,只处理源文件,所以不需要库文件和额外的目标文件的参与,因此,只要代码在语法上没有错误,compile就一定能产生目标文件。在编译器里,有一些默认的规定,我们需要了解。在编译器中,bin目录用

    11、于存放compiler、linker等工具,include目录用于存放头文件,lib目录用存放库文件,大多数的编译器的目录就是按这个来组织的。在TC文件夹中TCC.EXE是C语言的编译器,可以将代码编译为目标文件,并且能自动调用tlink链接生成可执行文件,以编译c:hello.c为例介绍TCC使用方法,如下所示。 (1)在运行菜单中输入cmd,调出Dos窗口,如图所示。图 Dos窗口(2)在DOS窗口中输入c:tctcc c:hello.c c:tmp.txt,如图所示。图 输入命令c:tmp.txt 代表将TCC的编译结果输出到c:tmp.txt中,如图所示。图 TCC编译结果3.2.5

    12、程序代码实现为了保存打开对话框中的文件名称,在CXXXDOC类中增加一个CString型的变量NamePath,如图所示。图 增加NamePath变量使用Class Wizard重载OnOpenDocument函数,如图所示。图 重载OnOpenDocument函数 单击Edit Code按钮,并编写相关代码,如图所示。图 文件名称保存到NamePath变量在CXXXView类中增加一个CString类型变量BinPath,用来保存TC的路径,并在CXXXView类的构造函数中将其初始化,如图所示。图 定义BinPath变量图 初始化BinPath变量编写CXXXView类的OnCompile

    13、函数,如下所示。void CCEditPadView:OnCompile() / 调用工程文件夹中的TCC命令来对程序进行编译 /定义命令字符串和文件字符串 CString TccStr,NameStr; /定义CreateProcess函数的命令字符数组,然后清零 char CmdStr200; memset(CmdStr,0,200); TccStr=BinPath+TCC.exe ; /得到文档中打开文件的路径和名称,c:tmp.txt代表将结果临时保存到c:tmp.txt CCEditPadDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); N

    14、ameStr=pDoc-NamePath + c:tmp.txt; /合并字符串 NameStr=TccStr+NameStr; /将合并后的字符串拷贝到CmdStr中 strcpy(CmdStr,NameStr); /使用ShellExecute,问题在于无法控制是否结束 /:ShellExecute(this-m_hWnd,open,TccStr,NameStr,SW_SHOW); /考虑使用CreateProcess或者ShellExecuteEx STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si,sizeof(si); si.

    15、cb=sizeof(si); ZeroMemory(&pi,sizeof(pi); /创建TCC的执行进程 if(!CreateProcess(NULL,CmdStr,NULL,NULL,0,0,NULL,NULL,&si,&pi) TRACE0(Failed to create Tcc Processn); return ; / fail to create /等待TCC进程结束信号再关闭进程 WaitForSingleObject(pi.hProcess,INFINITE); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); /将TCC编

    16、译出来的结果写入到程序的输出框里 CFile theFile; char theFileText65535; memset(theFileText,0,65535); char *szFileName=c:tmp.txt; BOOL bOpenOK; CFileStatus status; /如果该文件已经存在 if(CFile:GetStatus(szFileName,status) /打开文件将结果读取到theFileText中 bOpenOK=theFile.Open(szFileName,CFile:modeReadWrite); theFile.Read(theFileText,65535); theFile.Close(); /得到框架指针 CMainFrame *pFrame=(CMainFrame *)GetParentFrame(); :SetWindowText(pFrame-m_CtrlBar.m_wndOutPut.m_hWnd,theFileText);


    注意事项

    本文(第三章C语言编辑器设计与实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开