你自已开发可费事了,有现成的。
一个简单的文本编辑器。(是在DEV C++下写的)//头文件//h#define CM_FILE_SAVEAS 9072#define CM_FILE_EXIT 9071#define CM_FILE_OPEN 9070#define CM_ABOUT 9069//主程序文件///*****************************************************/#include
这个已经有很多完善的api在以jquery为库的api中有很多例子,如markitup,可以实现文本编辑器的所有功能,并且是轻量级有丰富易用的api,可自行扩展
直接用MFC自动生成实现吧,不过要改一个基类,是改成CEDIT
#include
如果是在DOS平台,那10页是不够的。如果是在Win32平台,那可以用RichText控件来完成,那就简单多了。
PNEdit PNEdit 是一个类似于Vi的功能多样、用户可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。图形界面设计简洁方便让编辑窗口设置更加容易,快捷键和命令行操作方式使得文本编辑的速度和效率有所提高,内嵌的多个应用插件扩展了文本编辑功能。Table of Contents简介窗口设置编辑方式快捷命令应用插件版本信息参考资料简介PNEdit是一个功能多样、用户可定制的文本编辑器,支持tab分页和横向/纵向分割窗口等方式可同时对多个文件进行编辑,文本窗口中的颜色、语法、字体和高亮等属性有多种方式可以方便的设置。PNEdit产品概述 PNEdit是一种支持多模式的文本编辑器,在不同编辑模式下操作行为有所不同,在对编辑的文本内容的选择会有多种选择方式,在文本编辑操作时主要依靠大量的快捷键命令操作来实现快速高效的文本编辑功能。PNEdit文本编辑器中集成了目录浏览界面、高级编辑工具、高级搜索工具、编辑状态缓冲、编辑字符缓冲、编辑文件缓冲和编辑内容标记等应用插件以扩展文本编辑功能。 窗口设置在PNEdit中可以支持同时对多个文件进行文本编辑,在编辑窗口中打开的文本内容其颜色、语法、字体和高亮等属性都可以根据不同需求做相应的设置,用户可以在PNEdit工具打开之后在界面中的菜单或按钮打开对应的设置窗口做设置,也可以将需要设置的参数记录在设置文件中。PNEdit界面 1、编辑窗口文本编辑窗口支持多Tab的方式同时打开多个文件进行编辑,在每个Tab窗口还支持横向分割和纵向分割的方式同时打开多个文件进行编辑。文本编辑窗口中可以显示该窗口中打开的文件编辑状态的信息,每个编辑窗口都有保存文件和未保存文件这两个编辑状态。文本编辑窗口下方有一行编辑信息小窗口,在该小窗口中分为三段信息显示,分别为编辑命令显示区间、当前光标所在的行列位置、当前光标所在位置对应占整个文件浏览内容的百分比。2、颜色设置支持类型设置和详细设置两种方式改变所有编辑窗口中的颜色。3、语法设置支持多种语法高亮显示当前编辑窗口中的文本内容。4、字体设置支持类型设置和详细设置两种方式改变所有编辑窗口中的字体。5、高亮设置支持对编辑窗口中的Cursor、Select、Insert、Edit、Search、List和Tag等项的设置。6、设置文件对编辑窗口设置的参数记录可以保存在一个文件中,该文件需命名为”pnrc”,可以放在PNEdit工具启动目录、用户的Home目录和PNEdit工具包安装目录这三个地方,在PNEdit工具启动时自动读取该文件中的参数值,并将其作为工具打开时的初始值设置编辑窗口。 编辑方式PNEdit是一种支持多模式的文本编辑器,在不同编辑模式下操作行为有所不同,在对编辑的文本内容的选择会有多种选择方式,在做具体编辑操作时主要靠大量的快捷键命令操作来实现快速高效的文本编辑功能。1、编辑模式:PNEdit文本编辑器主要支持命令模式、输入模式和替换模式这3种不同的文本编辑方式。 命令模式,在该模式下文本编辑窗口的可输入编辑状态是关闭的,对文本内容进行编辑时可以通过鼠标键、单个快捷键、多个快捷键组合和命令行输入编辑命令这4种方式进行快捷的文件内容编辑操作。输入模式,在该模式下文本编辑窗口的可输入编辑状态是打开的,对文本内容进行编辑时可以通过字符直接输入、鼠标键、单个快捷键、多个快捷键组合和命令行输入编辑命令这5种方式进行快捷的文件内容编辑操作。替换模式,在该模式下文本编辑窗口的可输入编辑状态是关闭的,对文本内容进行编辑时可以通过快捷键”r”和快捷键”R”这2种编辑内容替换操作方式,分别对应替换光标所在字符和替换光标至行尾所有字符(碰到
北京科技大学的吧。。。
main不能使用在内部类中classVehicle{privateStringname;privateintamount;privateintmaxspeed;publicStringgetName(){returnname;}publicintgetAmount(){returnamount;}publicintgetMaxspeed(){returnmaxspeed;}publicvoidsetName(StringstuName){name=stuName;}publicvoidsetAmount(intstuAmount){amount=stuAmount;}publicvoidsetMaxspeed(intstuMaxspeed){maxspeed=stuMaxspeed;}publicVehicle(StringstuName,intstuAmount,intstuMaxspeed){setName(stuName);setAmount(stuAmount);setMaxspeed(stuMaxspeed);}}publicclassVehicleTest{publicstaticvoidmain(Stringargs[]){Vehiclecar=newVehicle("bus",18,120);Vehiclesteamboat=newVehicle("boat",19,110);Vehicleaeroplane=newVehicle("airliner",8,300);Sprintln("姓名"+"\t"+"数量"+"\t"+"最大速度");Sprintln(Name()+"\t"+Amount()+"\t"+Maxspeed());Sprintln(Name()+"\t"+Amount()+"\t"+Maxspeed());Sprintln(Name()+"\t"+Amount()+"\t"+Maxspeed());}}
lz,0分的悬赏,动力太小了
自己做作业!
classVehicleTest包含静态的main方法,静态方法需要在主线程类,你这里主线程类是classVehicle,VehicleTest被写成了一个内部类(Vehicle的{}里面)。可以把两个类改成并行的,可以写成2个源文件,可以把VehicleTest去掉,保留main方法,使他作为Vehicle的静态main方法。
这是一个文本编辑器的源码:自己用MASM编译一下,肯定能用red_chr macro ;读取字符宏定义 mov ah,0 int 16hendmstring macro p1 ;输入字符光标 mov ah,9 lea dx,p1 int 21hendmwin macro opr1,opr2,opr3,opr4,opr5,opr6 ;建立窗口 mov ah,06h mov al,opr1 mov bh,opr2 mov ch,opr3 mov cl,opr4 mov dh,opr5 mov dl,opr6 int 10hendmpos_curse macro op1,op2,op3 ;定义光标位置 mov ah,2 mov bh,op1 mov dh,op2 mov dl,op3 int 10hendmpos_get macro ;显示光标位置 mov ah,03h mov bh,0 int 10hendmdata segment ;定义数据段 menu db 'File Edit Help $' mass_1 db 'F1 Active file F10 Active help','$' manu_1 db ' New ',13,10,'$' manu_2 db ' Open ',13,10,'$' manu_3 db ' Save ',13,10,'$' manu_4 db ' Save as ',13,10,'$' manu_5 db ' Exit ','$' handle dw ? message1 db ' Please input file name:','$' message2 db ' Please input save file name:','$' message3 db ' Please input open file name:','$' message4 db ' ***The file is not save! Save it now? (Y/N)***: ','$' path db 50 dup(0),'$' buffer db 2000 dup(?) bak db 3850 dup(0) line db ? row db ? char db ? help_mas1 db ' welcome use editor! $' ;帮助内容 help_mas2 db 'please the first active help! $' help_mas3 db 'good lucky!! $' help_mas4 db '==========================================================$' help_mas5 db 'Press F1 to active $' help_mas6 db 'You can use DOWN cursor key to choose the fuction $' help_mas7 db 'Press F10 to show the help Press Esc To Quit$' date db 'today ??/??/','$' ;调用日期 hanglie db '???//???','$' ;行//列data endscode segment main proc far ;主程序 assume cs:code,ds:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax call wind call edit retmain endpwind proc near ;创建窗口子程序 win 0,3eh,1,0,24,79 ;定义窗口背景 win 1,1fh,0,0,0,79 win 0,1fh,24,0,24,79show: ;显示菜单位置及内容 pos_curse 0,0,1 mov ah,9 lea dx,menu int 21hshow_2: ;显示状态栏位置及内容 pos_curse 0,24,1 mov ah,9 lea dx,mass_1 int 21h call win3 call win4 pos_curse 0,1,0 mov row,dh mov line,dlwind endpedit proc nearchar_get: ;读字符 call comcom proc near ;定义功能键 pos_get mov row,dh mov line,dlfirst: pos_curse 0,row,linej00: mov ah,0 int 16h ;从键盘读字符 ah=扫描码 al=字符码 push ax lea dx,buffer mov buffer[bx],al inc bx cmp ah,48h ;上 jz up_1 cmp ah,50h ;下 jz down_1 cmp ah,4bh ;左 jz left cmp ah,4dh ;右 jz right cmp ah,1ch ;回车 jz enter_1 call fuc_key mov ah,2 mov dl,al int 21h pop ax call menu_show jmp j6down_1: jmp downenter_1: jmp enter_2up_1: jmp upleft: ;光标左移 pos_get mov row,dh mov dl,line cmp line,0 jnz direct mov line,79 dec row cmp row,0 je stop2 jmp firststop2: mov row,1 jmp firstdirect: dec line call win4 ;显示光标位置 jmp firstright: ;光标右移 pos_get mov row,dh mov dl,line cmp line,79 jnz direct2 mov line,0 inc row cmp row,24 je returns1 jmp firstdirect2: inc line call win4 jmp firstenter_2: jmp enterup: ;上移光标 pos_get mov row,dh mov dl,line dec row cmp row,0 je stop1 call win4 jmp firststop1: mov row,1 jmp firstdown: ;下移光标 pos_get mov row,dh mov dl,line inc row cmp row,24 je stop3 call win4 jmp firststop3: mov row,23 jmp firstreturns1: jmp returnsenter: ;回车换行 pos_get mov row,dh mov line,dl inc row cmp row,24 je returns mov line,0 call win4 jmp firstreturns: mov row,24 mov line,0 jmp firstj6: retcom endpfuc_key proc near ;功能键子程序 next: cmp ah,47h ;home jz home cmp ah,4fh ;end jz _end cmp ah,0eh ;backspace jz bak_sp cmp ah,53h jz del cmp ah,44h ;F10 jz help_0 rethelp_0: call helphome: ;HOME键的功能 pos_get mov row,dh mov line,0 call win4 jmp first _end: ;END键的功能 pos_get mov row,dh mov line,79 call win4 jmp firstbak_sp: ;退格键的功能 pos_get mov row,dh mov line,dl cmp line,0 je stop dec line jmp abstop: mov line,0 ab: pos_get 0,row,line mov ah,2 mov dl,00 int 21h call win4 jmp firstdel: ;DEL删除 pos_get mov row,dh mov line,dl dec line pos_get 0,row,line mov ah,2 mov dl,00 int 21h inc line call win4 jmp firstcm: cmp line,00 jz pos_cmpos_cm: pos_curse 0,0,0 jmp firsthelp proc near ;显示帮助信息 call savedisplay ;显示帮助信息每行的位置 pos_get push dx win 0,57h,4,5,21,70 pos_curse 0,6,25 string help_mas1 pos_curse 0,8,11 string help_mas2 pos_curse 0,10,11 string help_mas3 pos_curse 0,12,11 string help_mas4 pos_curse 0,14,11 string help_mas5 pos_curse 0,16,11 string help_mas6 pos_curse 0,18,11 string help_mas7 pop dx pos_curse 0,dh,dl mov ah,0 int 16h cmp ah,36h ;F10 active help jnz cls call helpcls: win 0,1eh,9,10,13,70 ;清屏 call backdisplayhelp endp fuc_key endpmenu_show proc near ;显示菜单 call savedisplay push cx cmp ah,3bh ;F1功能 jz menu_sh jmp char_getmenu_sh: ;定义菜单的背景字体颜色 pos_get push dx win 0,06h,2,1,7,11 win 0,65h,1,0,6,10 pos_curse 0,1,0 string manu_1 string manu_2 string manu_3 string manu_4 string manu_5 pop dx dec dl pos_curse 0,dh,dlcopmar: red_chr cmp ah,50h jz manu_n jmp manu_hidmanu_hid: ;菜单隐藏 win 0,1eh,1,1,7,11 call backdisplay jmp char_getmanu_n: ;开始定义各个菜单项 win 0,65h,5,1,5,8 pos_curse 0,5,0 string manu_5 win 0,15h,1,1,1,8 pos_curse 0,1,0 string manu_1 red_chr cmp ah,48h je manu_n cmp al,0dh jz new_1 cmp ah,50h je manu_o jmp manu_hidmanu_n0: jmp manu_nmanu_o: win 0,65h,1,1,1,8 pos_curse 0,1,0 string manu_1 win 0,15h,2,1,2,8 pos_curse 0,2,0 string manu_2 red_chr cmp ah,48h je manu_o cmp al,0dh jz open_1 cmp ah,50h je manu_s jmp manu_hidnew_1: jmp new_2manu_s: win 0,65h,2,1,2,8 pos_curse 0,2,0 string manu_2 win 0,15h,3,1,3,8 pos_curse 0,3,0 string manu_3 red_chr cmp al,0dh jz save_1 cmp ah,48h je manu_s cmp ah,50h je manu_a jmp manu_hidopen_1: jmp open_2manu_n1: jmp manu_nmanu_a: win 0,65h,3,1,3,8 pos_curse 0,3,0 string manu_3 win 0,15h,4,1,4,8 pos_curse 0,4,0 string manu_4 red_chr cmp ah,1ch jz save_2 cmp ah,48h je manu_a cmp ah,50h je manu_e jmp manu_hidmanu_n2: jmp manu_n1new_2: jmp newsave_1: call savesave_2: call saveasmanu_e: win 0,65h,4,1,4,8 pos_curse 0,4,0 string manu_4 win 0,15h,5,1,5,8 pos_curse 0,5,0 string manu_5 red_chr cmp ah,50h je manu_n2 cmp ah,48h je manu_e cmp ah,1ch je exit jmp manu_hidexit: call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60 mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message4 mov ah,9 int 21h mov ah,1 int 21h cmp al,79h jnz q call quittq: cmp al,6eh jz quitquit: win 0,07h,0,0,24,79 pos_curse 0,0,0 mov ah,4ch int 21h retmenu_show endpnew proc near ;新建文件 pos_get push dx call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message1 cmp al,0dh mov ah,9 int 21h mov bx,0all: mov ah,1 int 21h cmp al,0dh je alll mov path[bx],al inc bx jmp allalll: win 0,3eh,15,9,17,61 pop dx pos_curse 0,dh,dl lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax mov bx,ax mov ah,3eh int 21h win 0,3eh,1,0,23,79 mov dh,1 mov dl,0 mov bh,0 mov ah,2 int 10h jmp char_getnew endpopen_2: jmp opensaveas proc near ;另存为文件 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; win 0,3eh,1,0,6,10 call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message2 mov ah,9 int 21h mov bx,0bll: mov ah,1 int 21h cmp al,0dh je blll mov path[bx],al inc bx jmp bllblll: pos_get push dx win 0,3eh,1,0,23,79 call backdisplay pop dx pos_curse 0,dh,dl lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,40h int 21h mov bx,handle mov ah,3eh int 21h call backdisplay jmp char_getsaveas endpopen proc near ;打开文件 call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60 mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message3 mov ah,9 int 21h mov bx,0cll: mov ah,1 int 21h cmp al,13 je clll mov path[bx],al inc bx jmp cllclll: win 0,3eh,1,0,23,79 lea dx,path mov ah,3dh mov al,0 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,3fh int 21h win 0,3eh,1,23,1,79 mov dh,1 mov dl,0 mov bh,0 mov ah,2 int 10h mov cx,1000 sub bx,bxreplay: mov dl,buffer[bx] inc bx mov ah,2 int 21h loop replay mov bx,handle mov ah,3eh int 21h mov dh,1 mov dl,0 mov bh,0 mov ah,2 int 10h mov cx,10 mov bx,0cleapath_3: mov bl,0 mov path[bx],bl loop cleapath_3 jmp char_getopen endpsave proc near ;保存文件 pos_get push dx win 0,3eh,1,0,6,10 call backdisplay mov ah,path cmp ah,21h jl j_3 jmp j_4j_3: win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message2 mov ah,9 int 21h mov bx,0dll: mov ah,1 int 21h cmp al,0dh je dlll mov path[bx],al inc bx jmp dlldlll: win 0,3eh,1,0,23,79 pop dx pos_curse 0,dh,dl j_4: lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,40h int 21h mov bx,handle mov ah,3eh int 21h call backdisplay jmp char_getsave endpsavedisplay proc near push ax push bx push cx push dx push ds mov ax,0002h int 33h mov bx,0d mov cx,3840dloop1: mov ax,0b800h mov ds,ax mov dl,ds:[bx] mov ax,data mov ds,ax mov bak[bx],dl inc bx loop loop1 mov ax,0001h int 33h pop ds pop dx pop cx pop bx pop axsavedisplay endpbackdisplay proc near push ax push bx push cx push dx push ds mov bx,0d mov cx,3840dloop11: mov ax,data mov ds,ax mov dl,bak[bx] mov ax,0b800h mov ds,ax mov ds:[bx],dl inc bx loop loop11 pop ds pop dx pop cx pop bx pop ax retbackdisplay endpquitt proc near ;退出 call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message2 mov ah,9 int 21h mov bx,0qll: mov ah,1 int 21h cmp al,0dh je qlll mov path[bx],al inc bx jmp qllqlll: win 0,07h,15,10,17,61 win 0,3eh,14,9,16,60 call backdisplay lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,40h int 21h mov bx,handle mov ah,3eh int 21h call backdisplay win 0,07h,0,0,24,79 mov ah,4ch int 21h retquitt endpedit endp win3 proc near ;显示日期 mov ah,2ah int 21h mov bl,10d mov ax,0 mov al,dh div bl add ax,3030h mov [date+6],al mov [date+7],ah mov ax,0 mov al,dl div bl add ax,3030h mov [date+9],al mov [date+10],ah win 0,1dh,0,67,0,79 pos_curse 0,0,67 mov dx,offset date mov ah,09h int 21h retwin3 endpwin4 proc near ;显示行//列 mov ah,03h mov bh,0 int 10h mov bl,100d mov bh,10d mov ax,0 mov al,dh div bl add al,30h mov [hanglie+0],al mov al,ah mov ah,0 div bh add ax,3030h mov [hanglie+1],al mov [hanglie+2],ah mov ax,0 mov al,dl div bl add al,30h mov [hanglie+5],al mov al,ah mov ah,0 div bh add ax,3030h mov [hanglie+6],al mov [hanglie+7],ah win 0,1dh,24,60,24,70 pos_curse 0,24,61 mov dx,offset hanglie mov ah,09h int 21h retwin4 endpcode ends end start ;结束 文档我也不会写,不好意思还是你自己搞定吧
100分整个这么复杂的东东,难~~~~
JDK自带一个简单的Notepad,你可以研究一下他的源代码。在%JAVA_HOME%\demo\jfc\Notepad 目录下JDK自带一个稍复杂的Stylepad,你可以研究一下他的源代码。在%JAVA_HOME%\demo\jfc\Stylepad目录下