课程设计说明书
课程名称:        汇编语言             
班级:   计算机B08-1      姓名:__ __
学号:__      200807014231              __
设计题目:___    win32编写记事本            ___
设计时间:623      __  71        __
指导教师:_____ 杜杏菁_    ________________
    :_________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:__  __评阅教师:_____
一、课程设计目的
进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、课程设计要求
  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,"20100701",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                                                                ;如果ReadFileWriteFile返回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                                                                ;如果ReadFileWriteFile返回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小时内删除。