- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
windows课程设计报告(正文)
课程设计的目的和任务1.1设计目的自计算机的普遍运用以来,在人们日常生活中,利用计算机进行数据的存储越来越广泛和重要,其中以windows的office软件运用的最为广泛,其包含了文字的输入和图形的插入等诸多强大的功能,但是其空间开销大,在运行时占用了过多的内存空间。但是,记事本和写字板以其方便快捷的优点同样赢得了很多客户的亲赖,不过记事本和写字板都无法满足图形的绘制和插入,使得其功能逊于office。无论是office还是记事本都有各自的特点,本次课程设计就结合了office与记事本的设计风格和功能,设计制作一个简易图文的编辑输入软件,其主要的功能结合了office和记事本的一些优点,可以进行文字的输入,简易图形的插入,同时还满足用户自适应的画图。1.2设计要求利用windows API函数,设计并实现基于Win32 GUI模式的简易图文编辑软件。1.3设计功能接收中英文文字输入。在文字区域内可插入基本图形:矩形、圆形等。自适应窗口显示,即带滚动条分行分页显示。1.4设计人员及分工设计人员分工XXX对字符输入的处理,包括对字符的删除、输入区的清空、光标的处理、滚动条的处理、光标和滚动条的同步,以及程序的测试和报告的编写XXX模式对话框的设计、图形的选择、颜色的选择、画笔的选择、图形的插入、自绘画,以及程序的测试和报告的编写1.5编译工具基于Microsoft Visual C++ 6.0的win32 Application语言开发1.6开发平台Windows Xp 和 Win 7简易图文编辑软件设计过程2.1设计流程图图1 设计流程图2.2主界面的创建窗口界面沿用word界面的设计风格(见图2),主窗口的中间大部分区域插入子窗口进行中文和英文的输入,在剩余的两边可实现矩形和椭圆图形的插入,以及实现用户自主作画。图2 界面设计图2.3父窗口与子窗口如图2所示,父窗口采用GRAY_BRUSH 和子窗口以示区别,在子窗口进行文字输入的时候,要和父窗口进行输入焦点的切换,程序中采用如下办法,定义全局变量 idFouse ,在父窗口中通过 case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd,idFocus));/*通过子窗口的hwnd,idFoucs设置父窗口具有输入焦点*/ return 0;而在子窗口中由如下代码把子窗口结构中的子窗口ID取到自己的idFocus case WM_SETFOCUS: idFocus=GetWindowLong(hwnd,GWL_ID); case WM_KILLFOCUS: InvalidateRect(hwnd,NULL,TRUE); return 0;从而实现了再子窗口中输入文字的操作。2.4文字输入如图2所示,输入的文字将显示在子窗口中(白色区域)。本软件接受用户输入英文字符和中文汉字两种,并且可以实现对输入文字的删除、清空、自适应换行以及滚动条的分页显示,同时可通过键盘操作进行对光标的前移、后移、上移以及下移,实现代码如下所示:2.4.1光标的操作case WM_KEYDOWN: switch (wParam) {case VK_HOME://光标移到当前行的起始位置 xCaret = 0 ; break ; case VK_END://光标移到当前行的最后位置if(xCaret!=m+1)xCaret=m+1; break ; case VK_PRIOR: //光标移到当前客户区显示的顶位置 yCaret = 0 ; break ; case VK_NEXT: //光标移到当前客户区显示的底位置 yCaret = cyBuffer - 1 ; break ; case VK_LEFT: xCaret = max (xCaret - 1, 0) ;//移到当前行的起始位置 break ; case VK_RIGHT://移到当前行输入文字的最后 xCaret = min (xCaret + 1, cxBuffer - 1) ; break ; case VK_UP://光标上移一行 yCaret = max (yCaret - 1, 0) ; break ; case VK_DOWN://光标下移一行 yCaret = min (yCaret + 1, cyBuffer - 1) ; break ;case VK_DELETE://光标前移一个并删除一个文字for (x = xCaret ; x cxBuffer - 1 ; x++)BUFFER (x, yCaret) = BUFFER (x + 1, yCaret) ;BUFFER (cxBuffer - 1, yCaret) = ;HideCaret (hwnd)
文档评论(0)