华 北 科 技 学 院
课程设计说明书
课程名称: 汇编语言
班级: 计算机B08-1 姓名:_飞_ __
学号:__ 200807014231 __
设计题目:___ win32编写记事本 ___
设计时间: _ 6月23日 _至_ 7月1日 __
指导教师:_____ 杜杏菁_ ________________
评 语:_________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:__ __评阅教师:_____
一、课程设计目的
进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、课程设计要求
1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。
2.遵循模块化、结构化的程序设计方法。
3.要求程序必须正确。
4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。
5.要求程序结构合理,语句使用得当。
6.适当追求编程技巧和程序运行效率。
三、课程设计题目:
win32编写记事本
四、课题分析
WINDOW 记事本的编写,要求能实现基本菜单框架并打开窗口,有能力的同学可以编写进行数据录入并保存的代码
五、流程图:
六、程序源代码:
.
386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include shell32.inc
includelib shell32.lib
include comctl32.inc
includelib comctl32.lib
include comdlg32.inc
includelib comdlg32.lib
ICO_MAIN EQU 1000h ;图标
IDM_MAIN EQU 2000h ;菜单
IDA_MAIN EQU 2000h ;加速键
IDM_NEW EQU 2101h ;新建
IDM_OPEN EQU 2102h ;打开
IDM_SAVE EQU 2103h ;保存
IDM_SAVEAS EQU 2104h ;另存为
IDM_EXIT EQU 2105h ;退出
IDM_UNDO EQU 2201h ;撤销
IDM_CUT EQU 2203h ;剪切
IDM_COPY EQU 2204h ;复制
IDM_PASTE EQU 2205h ;粘贴
IDM_DELETE EQU 2206h ;删除
IDM_FIND EQU 2207h ;查
IDM_REPLACE EQU 220Ah ;替换
IDM_SELECTALL EQU 220Bh ;全选
IDM_FONT EQU 2301h ;字体
IDM_STATUSBAR EQU 2401h ;状态栏
IDM_HELP EQU 2501h ;帮助主题
IDM_ABOUT EQU 2502h ;关于
IDM_MENUHELP EQU 2601h ;菜单信息
.data?
hInstance dd ?
hWinMain dd ?
hMenu dd ?
hWinStatus dd ?
hWinEdit dd ?
hFile dd ?
hFindDialog dd ?
hRichEdit dd ?
dwFontColor dd ?
idFindMessage dd ?
stFind FINDREPLACE <?>
szFindText db 100 dup (?)
szReplaceText db 100 dup (?)
szFileName db MAX_PATH dup (?)
stLogFont LOGFONT <?>
dwOption dd ?
.data
F_STATUSBAR equ 00000001h
dllEdit db "RichEd20.dll",0
errTitle db "错误",0
noRichEdit db "无法到RichEd20.dll"
className db "TextEditor",0
captionMain db "文本编辑器",0
classEdit db "RichEdit20A",0
fontFace db "Fixedsys",0
modify db "你已经改动过啦,要不要存一下?",0
filter db "文本文件(*.txt)",0,"*.txt",0,"所有文件",0,"*.*",0,0
defExt db "txt",0
titleFormat db "%s - 我的记事本",0
errCreateFile db "咦!出现问题了!",0
errOpenFile db "咦!怎么打不开!",0
notFound db "不给力啊,不到!",0
noName db "还没起名字",0
timeFormat db "%02d:%02d:%02d",0
charsFormat db "字节数:%d",0
lineFormat db "行:%d",0
colFormat db "列:%d",0
helpTitle db "帮助",0
helpText db "Sorry!无法提供任何帮助",0
aboutTitle db "关于 记事本getsavefilename",0
aboutText db "我的记事本",0ah,0dh,"作者:飞",0ah,0dh,"2010年07月01日",0ah,0dh,0
dwStatusWidth dd 100,200,300,400,-1
dwMenuHelp dd 0,IDM_MENUHELP,0,0
FINDMSGSTRING db "commdlg_FindReplace",0
.code
;====================================================================================================
_CheckModifyState PROC
invoke SendMessage,hWinEdit,EM_GETMODIFY,0,0 ;获取控件内容是否改变的信息
.if eax != 0
invoke MessageBox,hWinMain,addr modify,addr captionMain,\
MB_YESNOCANCEL or MB_ICONQUESTION
.if eax == IDYES
call _SaveFile ;有待改动
.elseif eax == IDCANCEL
mov eax,FALSE
ret
.endif
.endif
mov eax,TRUE
ret
_CheckModifyState ENDP
;====================================================================================================
;Richedit的流出操作
_StreamProcOut PROC uses ebx edi esi _dwCookie,lpBuffer,NumBytes,pBytes
invoke WriteFile,hFile,lpBuffer,NumBytes,pBytes,0
xor eax,1 ;如果ReadFile或WriteFile返回1(成功),则最终eax返回0,说明操作成功
ret
_StreamProcOut ENDP
;====================================================================================================
;Richedit的流入操作
_StreamProcIn PROC uses ebx edi esi _dwCookie,lpBuffer,NumBytes,pBytes
invoke ReadFile,hFile,lpBuffer,NumBytes,pBytes,0
xor eax,1 ;如果ReadFile或WriteFile返回1(成功),则最终eax返回0,说明操作成功
ret
_StreamProcIn ENDP
;====================================================================================================
;设置字体和字体的颜
_SetFont PROC _lpszFont,_dwFontSize,_dwColor
local @stCf:CHARFORMAT
invoke RtlZeroMemory,addr @stCf,sizeof @stCf
;开始填充stCf结构
mov @stCf.cbSize,sizeof @stCf
mov @stCf.dwMask,CFM_SIZE or CFM_FACE or CFM_BOLD or CFM_COLOR ;字段掩码,用来指定结构中哪些字段是有效的
push _dwFontSize
pop @stCf.yHeight
push _dwColor
pop @TextColor
mov @stCf.dwEffects,0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论