没有合适的资源?快使用搜索试试~ 我知道了~
windows课程设计报告(正文).docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 12 浏览量
2022-07-07
03:18:34
上传
评论
收藏 297KB DOCX 举报
温馨提示
试读
18页
windows课程设计报告(正文)
资源推荐
资源详情
资源评论
1
1、 课程设计的目的和任务
1.1 设计目的
自计算机的普遍运用以来,在人们日常生活中,利用计算机进行数据的存储
越来越广泛和重要,其中以 windows 的 office 软件运用的最为广泛,其包含了
文字的输入和图形的插入等诸多强大的功能,但是其空间开销大,在运行时占用
了过多的内存空间。但是,记事本和写字板以其方便快捷的优点同样赢得了很多
客户的亲赖,不过记事本和写字板都无法满足图形的绘制和插入,使得其功能逊
于 office。
无论是 office 还是记事本都有各自的特点,本次课程设计就结合了 office
与记事本的设计风格和功能,设计制作一个简易图文的编辑输入软件,其主要的
功能结合了 office 和记事本的一些优点,可以进行文字的输入,简易图形的插
入,同时还满足用户自适应的画图。
1.2 设计要求
利用 windows API 函数,设计并实现基于 Win32 GUI 模式的简易图文编辑软件。
1.3 设计功能
1. 接收中英文文字输入。
2. 在文字区域内可插入基本图形:矩形、圆形等。
3. 自适应窗口显示,即带滚动条分行分页显示。
1.4 设计人员及分工
设计人员
分工
XXX
对字符输入的处理,包括对字符的删除、输入区的清空、光标的
处理、滚动条的处理、光标和滚动条的同步,以及程序的测试和
报告的编写
XXX
模式对话框的设计、图形的选择、颜色的选择、画笔的选择、图
形的插入、自绘画,以及程序的测试和报告的编写
1.5 编译工具
基于 Microsoft Visual C++ 6.0 的 win32 Application 语言开发
1.6 开发平台
Windows Xp 和 Win 7
2
2、 简易图文编辑软件设计过程
2.1 设计流程图
图 1 设计流程图
2.2 主界面的创建
窗口界面沿用 word 界面的设计风格(见图 2),主窗口的中间大部分区域插
入子窗口进行中文和英文的输入,在剩余的两边可实现矩形和椭圆图形的插入,
实验用户自主画图
创建模式对话框
画笔样式的选择
加 入 插 入 图 形 的 功 能
(可选择矩形和椭圆)
画笔颜色的选择
加 入 图 形 颜 色 的 填 充
选择
添加滚动条
简易图文编辑软件
创建主窗口
添加子窗口
实现文字的输入
加入键盘功能
3
以及实现用户自主作画。
图 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 所示,输入的文字将显示在子窗口中(白色区域)。本软件接受用户
输入英文字符和中文汉字两种,并且可以实现对输入文字的删除、清空、自适应
换行以及滚动条的分页显示,同时可通过键盘操作进行对光标的前移、后移、上
移以及下移,实现代码如下所示:
4
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) ;
hdc = GetDC (hwnd) ;
SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
剩余17页未读,继续阅读
资源评论
oligaga
- 粉丝: 50
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功