📄 o21.htm
字号:
<html>
<head>
<title>用C++Builder3制作NotePad(记事本)</title>
<meta http-equiv="目录类型" content="文本/html; 字符集=gb2312">
</head>
<body bgcolor="#FFFFFF">
<table width="100%" border="0" height="285">
<tr>
<td height="35">
<div align="center" class="p14"><font color="#000000">用C++ Builder3 制作NotePad(记事本)</font></div>
</td>
</tr>
<tr valign="top">
<td><font color="#000000">启动C++ Builder3后,在File菜单中选New APPlication来建立一个新程序。这时,显示在屏幕中间的窗口的标题是Form1,这个窗口是程序的主表单(就是主窗口的意恩),它将在程序启动时自动显示。而以后再创建的表单(Form)一般需要用Show()方法(Method)来显示。和组件一样,系统为第一个表单起名为Form1,以后的表单起名为Form2、Form3等等,标题(Caption)也是如此。<br>
当然,你可以将它们改成你喜欢的名字。我们先来把Form1的名字(Name)属性设为MainForm,把MainForm的标题(Caption)属性设为“Untited.txt--我的记事本”。接着可以用鼠标拖动窗口的位置和改<br>
变窗口的大小。以上的这些工作,几乎每个程序都需要如法炮制一番。<br>
随后,我们要开始NotePad的编程工作了。知己知彼,百战不殆,先来分析一下MicroSoft NotePad的结构。其实NotePad是附件里最简单的程序了,它的主窗口中只包含一个占据全部用户区域(Client
Area)的多行的编辑控制(Edit)。由于编辑控制最多容纳64KB文字(Windows95),所以NotePad只能打开小于64KB的文件。好,我们来依样画葫芦,选择Standard中的多行编辑(Memo)组件(而不是单行编辑组件)。<br>
放入表单中,将多行编辑Memo1的Align属性设为alClient,这时Memo1撑满了整个窗口,Memo1中显示的是Memo1。选择Memo1的Lines属性,[TString]后面出现了一个按钮。<br>
单击该按钮,将出现一个设置Lines属性的对话框,其中第一行便是“Memo1”。多行编辑(Memo)组件的Lines属性在设计时(Design
Time)设定的内容将在该窗口创建时自动显示。由于我们不需要显示什么,所以把“Memo1”擦掉,选OK退出。你一定想看看目前的效果,运行一下吧。编译……连接……启动程序……怎<br>
么样,是不是和NotePad一模一样,能打字、删字、删行,还能使用右键菜单来复制(copy)和粘贴(paste)。<br>
本来就是嘛,用一样的编辑控制,不一样才怪呢。哎,不对,好像字体小了点,而且没有滚动条。没有关<br>
系,关闭程序回到C++ Builder3中,先修改Memo1的字体(Font)属性,选择system字体(当然你爱选什么字<br>
体都可以),然后设置滚动条(ScrollBars)属性,选择ssBoth(两根滚动条都要)。在这些改动之后,先别急着运行,windows的程序没菜单是不行的。在C++
Builder中,菜单也是组件之一。选择Standard中的主菜单(MainMenu)组件放入表单中。主菜单(MainMenu)组件显示为一个图标。顺便提一句菜单,对话框或系统功能之类组件属于非可视组件(nonvisual
components),它们的工作基本不是用来满足视觉的,或者在程序运行时根本就看不见(相对于界面上可视组件来说),因此你可以将非可视组件放在表单中的任意位置。<br>
接下来的工作是制作菜单,双击主菜单MainMenu1的图表,会弹出菜单编辑窗口,开始时是一个空菜单。按右键会弹出一个菜单(不是我们要做的菜单),其中:<br>
Insert(添加一个菜单项,按Insert键完成相同的功能)<br>
Delete(删除一个菜单项,按Delete键完成相同的功能)<br>
Create SubMenu(添加一个子菜单,按Ctrl + →键完成相同的功能)<br>
Select Menu(选择一个菜单,用来关闭当前编辑的菜单并选择另一个菜单来编辑)<br>
Save as Template(将当前菜单保存为模板,供以后使用)<br>
Insert From Template(将已有的菜单模板加入当前菜单)<br>
Delete Template(删除菜单模板)<br>
Insert From Resource(从资源文件中取得菜单加入当前菜单)<br>
制作“我的记事本”的菜单有一种偷懒的方法,就是照抄Microsoft记事本的菜单。你可以用BC5.02的IDE打开Notepad.exe(先把打开文件对话框中的Viewer设为Edit
Resource,再把文件类型设为Exe cutable(*.exe),这样才是以编辑资源的方式打开EXE文件,否则默认的打开方式是Debug调试程序),将里面的菜单导出以RC(资源脚本)方式存盘,然后用Insert
From Resource导入该菜单;一共用不了2分钟。<br>
还有一种方法就是自己一项一项慢慢地做。当然,不管你用什么方法,最后都要做出菜单来才能继续下面的工作。下面附上从Windows
NT4.0中Notepad导出的菜单的资源脚本menu.rc,把下面的文件以menu.rc存盘就能用C++ Builder3来导入了:<br>
1 MENU<br>
{ POPUP "文件(&F)"<br>
{ MENUITEM "新建(&N)", 9<br>
MENUITEM "打开(&O)...", 10<br>
MENUITEM "保存(&S)", 1<br>
MENUITEM "另存为(&A)...", 2<br>
MENUITEM SEPARATOR<br>
MENUITEM "页面设置(&T)...", 32<br>
MENUITEM "打印(&P)", 14<br>
MENUITEM SEPARATOR<br>
MENUITEM "退出(&X)", 28<br>
}<br>
POPUP "编辑(&E)"<br>
{ MENUITEM "撤消(&U)\tCtrl+Z", 25<br>
MENUITEM SEPARATOR<br>
MENUITEM "剪切(&T)\tCtrl+X", 768,GRAYED<br>
MENUITEM "复制(&C)\tCtrl+C", 769, GRAYED<br>
MENUITEM "粘贴(&P)\tCtrl+V", 770,GRAYED<br>
MENUITEM "删除(&L)\tDel",771, GRAYED<br>
MENUITEM SEPARATOR<br>
MENUITEM "全部选定(&A)", 7<br>
MENUITEM "时间/日期(&D)\tF5",12<br>
MENUITEM SEPARATOR<br>
MENUITEM "自动换行(&W)", 27<br>
MENUITEM "设置字体(&F)...", 37<br>
}<br>
POPUP "搜索(&S)"<br>
{ MENUITEM "查找(&F)...", 3<br>
MENUITEM "查找下一个(&N)\tF3", 8<br>
MENUITEM "替换(&R)"', 40<br>
}<br>
POPUP "帮助(&H)"<br>
{ MENUITEM "帮助主题(&H)", 5<br>
MENUITEM SEPARATOR<br>
MENUITEM "关于记事本(&A)...",11<br>
}<br>
}<br>
关于菜单,还有两点要提:<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -