您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > C++Builder开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

用C++ Builder3 制作记事本
2001-12-22· ·  ··  

上一页  1 2 3 4 5 6  下一页


  制作“我的记事本”的菜单有一种偷懒的方法,就是照抄Microsoft记事本的菜单。你可以用BC5.02的IDE打开Notepad.exe(先把打开文件对话框中的Viewer设为Edit Resource,再把文件类型设为Exe cutable(*.exe),这样才是以编辑资源的方式打开EXE文件,否则默认的打开方式是Debug调试程序),将里面的菜单导出以RC(资源脚本)方式存盘,然后用Insert From Resource导入该菜单;一共用不了2分钟。
还有一种方法就是自己一项一项慢慢地做。当然,不管你用什么方法,最后都要做出菜单来才能继续下面的工作。下面附上从Windows NT4.0中Notepad导出的菜单的资源脚本menu.rc,把下面的文件以menu.rc存盘就能用C++ Builder3来导入了:
1 MENU
{ POPUP "文件(&F)"
{ MENUITEM "新建(&N)", 9
MENUITEM "打开(&O)...", 10
MENUITEM "保存(&S)", 1
MENUITEM "另存为(&A)...", 2
MENUITEM SEPARATOR
MENUITEM "页面设置(&T)...", 32
MENUITEM "打印(&P)", 14
MENUITEM SEPARATOR
MENUITEM "退出(&X)", 28
}
POPUP "编辑(&E)"
{ MENUITEM "撤消(&U)\tCtrl+Z", 25
MENUITEM SEPARATOR
MENUITEM "剪切(&T)\tCtrl+X", 768,GRAYED
MENUITEM "复制(&C)\tCtrl+C", 769, GRAYED
MENUITEM "粘贴(&P)\tCtrl+V", 770,GRAYED
MENUITEM "删除(&L)\tDel",771, GRAYED
MENUITEM SEPARATOR
MENUITEM "全部选定(&A)", 7
MENUITEM "时间/日期(&D)\tF5",12
MENUITEM SEPARATOR
MENUITEM "自动换行(&W)", 27
MENUITEM "设置字体(&F)...", 37
}
POPUP "搜索(&S)"
{ MENUITEM "查找(&F)...", 3
MENUITEM "查找下一个(&N)\tF3", 8
MENUITEM "替换(&R)"', 40
}
POPUP "帮助(&H)"
{ MENUITEM "帮助主题(&H)", 5
MENUITEM SEPARATOR
MENUITEM "关于记事本(&A)...",11
}
}




关于菜单,还有两点要提:


1.一般没有必要去改动菜单项的Name属性,使用系统给出的默认名就可以了。


2.以“-”为标题的菜单项即是菜单分割条,而菜单项的Break属性提供的分割则是一种很奇怪的样子--“垂直分害条”(群山笑:这个名词是我自已加上的)。
OK,到此为止,界面部分的工作已经全部完成了,接下来便是代码部分的编写。首先要做的就是打开文件和存盘的工作。我们来建立一个char *UserFileName的全局变量来存放文件名。按工具条上的Toggle Form/Uint将工作窗口切换到代码编辑区。这个按钮用于表单编辑区和代码编辑区的相互切换,按F11显示对象观察器。在“TMainForm *MainForm;”下加语句:
char *UserFileName="untitled.txt";//默认文件名Untitled.txt
BOOL If_saved=TRUE;//表示文件存盘与否
char title_buf[256];//标题的内容
接着,我们再切换回表单编辑区,从Dialogs组件条中选SaveDialog组件放入表单中。
SaveDialog组件就是用来显示Save As对话框的,当然用Windows API也能实现此功能,这里将使用SaveDialog组件。将SaveDialog1的DefaultExt(默认的扩展名)属性设为.txt,这表示如果用户没有加扩展名,系统会自动加上“.txt”。按Filter属性后的[…]按钮,在弹出的对话框中输入“文本文件”“*.txt”“所有文件”“*.*”。另外再双击Options属性,将展开后其中的ofOverwritePrompt(文件覆盖提醒)属性设为true。接着在表单编辑区的菜单中选菜单项“另存为(A)...”,这时C++ Builder3会自动切换到代码编辑区,而光标停在一个函数的开头。在该例中菜单项“另存为(A)…”的名字属性是A1,所以这个函数的名字是A1Click(TObject * Sender),表示用户选择(Click)这个菜单项而执行的函数。我们所要做的是弹出Save As对话框来获得用户输入的文件名,并将这个文件存盘。所以在这个函数里加如下的语句:
if(!SaveDialog1->Execute()) return; //如果用户选择了取消,我们就return
UserFileName = SaveDialog1 -> FileName.c_str();
/ * FileName保存了用户输入的文件名,但是AnsiString类型的,用其中的c_str()方法可以将其转换成字符串*/
Memo1 ->Lines->SaveToFile(UserFlleName);
If_saved=TRUE; //已经存盘
sprintf(title_buf,"% s - 我的记事本”, UserFileName); /* 设置窗口的标题,记得要加上include <stdio.h> * /
Caption=title_buf;
/ * Memo中的Lines属性即是编辑控制中的内容,Lines属性是Strings类型的,用其中提供的SaveToFile方法可以方便地将编辑控制中的内容存盘 */

上一页  1 2 3 4 5 6  下一页

【责任编辑:  】
【发表评论】【关闭窗口】
■ 相关内容
 QuickReport基本知识
 用C++Builder开发动画DLL
 用C++Builder建立多线程COM服务器
 在BCB中使用DirectX
 Windows下DLL编程技术及应用
 如何在C++ Builder环境中实现在菜单中显示历史文件列表
 C++BUILDER非可视组件的消息处理技巧
 QuickReport基本知识
 拦截Windows消息--C++ Builder的API后门
 C++Builder4.0实现在线接收电子邮件
 窗体事件驱动链引发程序错误分析(二)
 窗体事件驱动链引发程序错误分析(一)
 Windows多线程间同步事件的控制方法
 深入VCL 理解BCB的消息机制(二)
 用C++Builder开发动画DLL
 C++ Builder VCL库函数简介
 TDataSetExport1.01使用说明
 手机短信息SMS开发—编码和解码
 用C++ Builder开发ISAPI
 C++Builder调用Matlab
 用C++Builder6制作Apache动态服务页
 用C++Builder6 制作动态服务页
 用C++Builder编写发送电子邮件软件
 用C++ Builder 制作屏幕保护程序
 C++Building制作闹钟
 利用C++ Builder 5.0创建用户自己的网上聊天程序
 用C++Builder5.0设计九宫排字游戏
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!