版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北科技学院课程设计阐明书课程名称:汇编语言班级:计算机B08-1姓名:_李鹏飞___学号:__07014231__设计题目:___win32编写记事本___设计时间:_6月23日_至_7月1日__指引教师:_____杜杏菁_________________评语:_____________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:____评阅教师:_____一、课程设计目进行程序设计办法和技能基本训练,巩固在课堂上学到关于程序设计基本知识和基本办法,通过实际动手能力培养,进一步熟悉汇编语言构造和用法,达到能独立阅读、编制和调试一定规模汇编语言程序水平。二、课程设计规定1.规定编写并调试通过一种小型软件,实现对软件或硬件操作。2.遵循模块化、构造化程序设计办法。3.规定程序必要对的。4.程序简要易懂,多运用输入输出提示,出错信息及必要注释。5.规定程序构造合理,语句使用得当。6.恰当追求编程技巧和程序运营效率。三、课程设计题目:win32编写记事本四、课题分析WINDOW记事本编写,规定能实现基本菜单框架并打开窗口,有能力同窗可以编写进行数据录入并保存代码开始加载头文献开始加载头文献加载数据段编译代码设计窗体编译生成文献结束六、程序源代码:.386.modelflat,stdcalloptioncasemap:noneinclude windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelibkernel32.libinclude shell32.incincludelib shell32.libinclude comctl32.incincludelibcomctl32.libinclude comdlg32.incincludelibcomdlg32.libICO_MAIN EQU 1000h ;图标IDM_MAIN EQU h ;菜单IDA_MAIN EQU h ;加速键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 100dup(?)szReplaceText db 100 dup (?)szFileName db MAX_PATHdup(?)stLogFont LOGFONT <?>dwOption dd ?.dataF_STATUSBAR equ 00000001hdllEdit db "RichEd20.dll",0errTitle db "错误",0noRichEdit db "无法找到RichEd20.dll"className db "TextEditor",0captionMain db "文本编辑器",0classEdit db "RichEdit20A",0fontFace db "Fixedsys",0modify db "你已经改动过啦,要不要存一下?",0filter db "文本文献(*.txt)",0,"*.txt",0,"所有文献",0,"*.*",0,0defExt db "txt",0titleFormat db "%s-我记事本",0errCreateFile db "咦!浮现问题了!",0errOpenFile db "咦!怎么打不开!",0notFound db "不给力啊,找不到!",0noName db "还没起名字",0timeFormat db "%02d:%02d:%02d",0charsFormat db "字节数:%d",0lineFormat db "行:%d",0colFormat db "列:%d",0helpTitle db "协助",0helpText db "Sorry!无法提供任何协助",0aboutTitle db "关于记事本",0aboutText db "我记事本",0ah,0dh,"作者:李鹏飞",0ah,0dh,"07月01日",0ah,0dh,0dwStatusWidth dd 100,200,300,400,-1dwMenuHelp dd 0,IDM_MENUHELP,0,0FINDMSGSTRING db "commdlg_FindReplace",0.code;====================================================================================================_CheckModifyStatePROC invoke SendMessage,hWinEdit,EM_GETMODIFY,0,0 ;获取控件内容与否变化信息 .if eax!=0 invoke MessageBox,hWinMain,addrmodify,addrcaptionMain,\ MB_YESNOCANCELorMB_ICONQUESTION .if eax==IDYES call _SaveFile ;有待改动 .elseif eax==IDCANCEL mov eax,FALSE ret .endif .endif mov eax,TRUE ret_CheckModifyStateENDP;====================================================================================================;Richedit流出操作_StreamProcOutPROCusesebxediesi_dwCookie,lpBuffer,NumBytes,pBytes invoke WriteFile,hFile,lpBuffer,NumBytes,pBytes,0 xoreax,1 ;如果ReadFile或WriteFile返回1(成功),则最后eax返回0,阐明操作成功 ret_StreamProcOutENDP;====================================================================================================;Richedit流入操作_StreamProcInPROCusesebxediesi_dwCookie,lpBuffer,NumBytes,pBytes invoke ReadFile,hFile,lpBuffer,NumBytes,pBytes,0 xoreax,1 ;如果ReadFile或WriteFile返回1(成功),则最后eax返回0,阐明操作成功 ret_StreamProcInENDP;====================================================================================================;设立字体和字体颜色_SetFont PROC _lpszFont,_dwFontSize,_dwColor local @stCf:CHARFORMAT invoke RtlZeroMemory,addr@stCf,sizeof @stCf ;开始填充stCf构造 mov @stCf.cbSize,sizeof@stCf mov @stCf.dwMask,CFM_SIZEorCFM_FACEorCFM_BOLDorCFM_COLOR ;字段掩码,用来指定构造中哪些字段是有效 push _dwFontSize pop @stCf.yHeight push _dwColor pop @stCf.crTextColor mov @stCf.dwEffects,0 invoke lstrcpy,addr@stCf.szFaceName,_lpszFont invoke SendMessage,hWinEdit,EM_SETTEXTMODE,1,0 ;设立工作模式 invoke SendMessage,hWinEdit,EM_SETCHARFORMAT,SCF_ALL,addr@stCf ;为控件中所有文本设立指定格式 ret_SetFontENDP;====================================================================================================;查找文字_FindText PROC local @stFindText:FINDTEXTEX;设立查找区域 invoke SendMessage,hWinEdit,EM_EXGETSEL,0,addr @stFindText.chrg .if stFind.Flags&FR_DOWN ;向下查找 push @stFindText.chrg.cpMax pop @stFindText.chrg.cpMin ;将这个选取区域结束位置用做下一次查找起始点 .endif mov @stFindText.chrg.cpMax,-1 ;始终查找到所有文本最后;设立查找选项 mov @stFindText.lpstrText,offsetszFindText mov ecx,stFind.Flags and ecx,FR_MATCHCASEorFR_DOWNorFR_WHOLEWORD ;查找并把光标设立到找到文本上 invoke SendMessage,hWinEdit,EM_FINDTEXTEX,ecx,addr@stFindText ;ecx中存储是搜索选项 .if eax== -1 mov ecx,hWinMain .if hFindDialog mov ecx,hFindDialog .endif invoke MessageBox,ecx,addrnotFound,NULL,MB_OKorMB_ICONINFORMATION ret .endif ;找到文本后来,文本位置在FINDTEXTEX构造chrgText字段中返回,chrgText字段是一种CHARRANGE构造,直接在EM_EXSETSEL消息中使用它将选取区域设立到找到文字上 invoke SendMessage,hWinEdit,EM_EXSETSEL,0,addr@stFindText.chrgText invoke SendMessage,hWinEdit,EM_SCROLLCARET,NULL,NULL ;卷动文字,以便找到文本可以出当前顾客视野中 ret_FindText ENDP;====================================================================================================;保存文献,如果没有打开或创立文献则另存为_SaveFile PROC local @stES:EDITSTREAM .if !hFile call _SaveAs .if !eax ret .endif .endif mov @stES.dwCookie,FALSE ;在Richedit流操作中写文献 mov @stES.dwError,NULL mov @stES.pfnCallback,offset_StreamProcOut ;回调函数 invoke SendMessage,hWinEdit,EM_STREAMOUT,SF_TEXT,addr@stES ;流出操作,文本格式是简朴文本格式 invoke SendMessage,hWinEdit,EM_SETMODIFY,FALSE,0 ;设立修改状态 mov eax,TRUE ret _SaveFile ENDP;=====================================================================================================;另存为_SaveAs PROC local @stOF:OPENFILENAME local @stEs:EDITSTREAM invoke RtlZeroMemory,addr@stOF,sizeof@stOF;显示"保存文献"对话框 ;填充stOF构造 mov @stOF.lStructSize,sizeof@stOF push hWinMain pop @stOF.hwndOwner ;所属窗口 mov @stOF.lpstrFilter,offsetfilter ;指定文献名筛选字符串 mov @stOF.lpstrFile,offsetszFileName mov @stOF.nMaxFile,MAX_PATH ;指定lpstrFile参数指向缓冲区长度,260 mov @stOF.Flags,OFN_PATHMUSTEXIST ;途径必要存在 mov @stOF.lpstrDefExt,offsetdefExt ;默认扩展名 mov @stOF.lpstrTitle,NULL ;标题为“另存为” invoke GetSaveFileName,addr@stOF .if eax ;创立新文献 invoke CreateFile,addrszFileName,GENERIC_READorGENERIC_WRITE,\ ;存取方式:为读写 FILE_SHARE_READ,\ ;共享属性:容许其她进程同步以读方式打开文献 0,\ ;安全属性:无法被继承 CREATE_ALWAYS,\ ;创立新文献,如果文献已经存在则清除原文献 FILE_ATTRIBUTE_NORMAL,\ ;文献属性:普通文献 0 ;文献模板句柄 .if eax!=INVALID_HANDLE_VALUE push eax .if hFile ;有打开文献 invokeCloseHandle,hFile .endif pop eax ;保存文献 mov hFile,eax ;文献句柄 call _SaveFile call _SetCaption call _SetStatus mov eax,TRUE ret .else invoke MessageBox,hWinMain,addrerrCreateFile,NULL,MB_OKorMB_ICONERROR .endif .endif mov eax,FALSE ret_SaveAs ENDP;=====================================================================================================;打开及输入文献_OpenFile PROC local @stOF:OPENFILENAME local @stES:EDITSTREAM invoke RtlZeroMemory,addr@stOF,sizeof@stOF;显示“打开文献”对话框 mov @stOF.lStructSize,sizeof@stOF push hWinMain pop @stOF.hwndOwner mov @stOF.lpstrFilter,offsetfilter mov @stOF.lpstrFile,offsetszFileName mov @stOF.nMaxFile,MAX_PATH mov @stOF.Flags,OFN_FILEMUSTEXISTorOFN_PATHMUSTEXIST ;文献必要存在 invoke GetOpenFileName,addr@stOF .if eax ;创立文献 invoke CreateFile,addrszFileName,GENERIC_READorGENERIC_WRITE,\ FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 ;打开存在文献,当文献不存在时函数会返回失败 .if eax== INVALID_HANDLE_VALUE invoke MessageBox,hWinMain,addrerrOpenFile,NULL,MB_OKorMB_ICONSTOP ret .endif push eax .if hFile invoke CloseHandle,hFile .endif pop eax mov hFile,eax ;读入文献 mov @stES.dwCookie,TRUE ;在Richedit流操作中读文献 mov @stES.dwError,NULL mov @stES.pfnCallback,offset_StreamProcIn invoke SendMessage,hWinEdit,EM_STREAMIN,SF_TEXT,addr@stES ;流入操作,文本格式是简朴文本格式 invoke SendMessage,hWinEdit,EM_SETMODIFY,FALSE,0 ;设立修改状态 call _SetCaption call _SetStatus .endif ret_OpenFile ENDP;=====================================================================================================;选取字体_ChooseFont PROC local @stCF:CHOOSEFONT invoke RtlZeroMemory,addr@stCF,sizeof@stCF mov @stCF.lStructSize,sizeof@stCF push hWinMain pop @stCF.hwndOwner mov @stCF.lpLogFont,offsetstLogFont ;指定字体名称和属性 push dwFontColor pop @stCF.rgbColors mov @stCF.Flags,CF_SCREENFONTSorCF_INITTOLOGFONTSTRUCTorCF_EFFECTS ;字体列表中只显示屏幕字体,对话框中显示“效果”复选框 invoke ChooseFont,addr@stCF .if eax push @stCF.rgbColors pop dwFontColor mov eax,@stCF.iPointSize ;顾客选取字体大小,单位是1/10磅 shl eax,1 invoke _SetFont,addrstLogFont.lfFaceName,eax,@stCF.rgbColors .endif ret_ChooseFont ENDP;=====================================================================================================;设立标题栏显示内容_SetCaption PROC local @szBuffer[1024]:byte .if szFileName ;如果当前是某一文献,则显示文献名 mov eax,offsetszFileName .else mov eax,offsetnoName ;否则显示未命名 .endif invoke wsprintf,addr@szBuffer,addrtitleFormat,eax invoke SetWindowText,hWinMain,addr@szBuffer ret_SetCaption ENDP;=====================================================================================================;设立菜单项,状态栏状态和信息_SetStatus PROC local @stRange:CHARRANGE local @dwLines,@dwLine,@dwLineStart local @szBuffer[256]:byte local @stST:SYSTEMTIME ;在状态栏显示行列信息 invoke GetWindowTextLength,hWinEdit invoke wsprintf,addr@szBuffer,addrcharsFormat,eax invoke SendMessage,hWinStatus,SB_SETTEXT,2,addr@szBuffer ;总字节数 invoke SendMessage,hWinEdit,EM_EXGETSEL,0,addr@stRange ;获取选定区域 invoke SendMessage,hWinEdit,EM_EXLINEFROMCHAR,0,-1 ;得知指定字符位于哪一行中 mov @dwLine,eax invoke SendMessage,hWinEdit,EM_LINEINDEX,eax,0 ;获取指定行起始字符位置 mov ecx,@stRange.cpMin sub ecx,eax inc ecx ;显示给顾客列号从1开始编号 invoke wsprintf,addr@szBuffer,addrcolFormat,ecx invoke SendMessage,hWinStatus,SB_SETTEXT,1,addr@szBuffer ;光标所在位置列 inc @dwLine ;显示给顾客行号从1开始 invoke wsprintf,addr@szBuffer,addrlineFormat,@dwLine invoke SendMessage,hWinStatus,SB_SETTEXT,0,addr@szBuffer ;光标所在位置行 ;依照状况变化菜单项状态 mov eax,@stRange.cpMin .if eax==@stRange.cpMax ;选中区域为空则复制粘贴删除不可用 invoke EnableMenuItem,hMenu,IDM_COPY,MF_GRAYED invoke EnableMenuItem,hMenu,IDM_CUT,MF_GRAYED .else invoke EnableMenuItem,hMenu,IDM_COPY,MF_ENABLED invoke EnableMenuItem,hMenu,IDM_CUT,MF_ENABLED .endif invoke IsClipboardFormatAvailable,CF_TEXT ;判断剪贴板格式与否是文本格式 .if eax ;如果剪贴板有内容则可以粘贴 invoke EnableMenuItem,hMenu,IDM_PASTE,MF_ENABLED .else invoke EnableMenuItem,hMenu,IDM_PASTE,MF_GRAYED .endif invoke GetWindowTextLength,hWinEdit .if eax ;如果可以全选 invoke EnableMenuItem,hMenu,IDM_SELECTALL,MF_ENABLED .else invoke EnableMenuItem,hMenu,IDM_SELECTALL,MF_GRAYED .endif invoke SendMessage,hWinEdit,EM_GETMODIFY,0,0 .if eax ;如果可以保存 invoke EnableMenuItem,hMenu,IDM_SAVE,MF_ENABLED .else invoke EnableMenuItem,hMenu,IDM_SAVE,MF_GRAYED .endif .if dwOption&F_STATUSBAR ;如果选中了状态栏 invoke CheckMenuItem,hMenu,IDM_STATUSBAR,MF_CHECKED .else invoke CheckMenuItem,hMenu,IDM_STATUSBAR,MF_UNCHECKED .endif ret_SetStatus ENDP;=====================================================================================================_Resize PROC local @stRect:RECT local @stRectTemp:RECT local @dwWidth,@dwHeight ;获得窗口客户区大小 invoke GetClientRect,hWinMain,addr@stRect mov eax,@stRect.right sub eax,@stRect.left mov @dwWidth,eax mov eax,@stRect.bottom sub eax,@stRect.top mov @dwHeight,eax ;计算及调节状态栏 .if dwOption&F_STATUSBAR invoke ShowWindow,hWinStatus,SW_SHOW invoke MoveWindow,hWinStatus,0,0,0,0,TRUE invoke GetWindowRect,hWinStatus,addr@stRectTemp mov eax,@stRectTemp.bottom sub eax,@stRectTemp.top sub @dwHeight,eax .else invoke ShowWindow,hWinStatus,SW_HIDE .endif ;调节Richedit控件位置 invoke MoveWindow,hWinEdit,@stRect.left,@stRect.top,@dwWidth,@dwHeight,TRUE ret_Resize ENDP;=====================================================================================================_Quit PROC invoke _CheckModifyState .if eax invoke DestroyWindow,hWinMain invoke PostQuitMessage,NULL ;产生一条WM_QUIT消息 .if hFile ;如果有打开文献则关闭 invoke CloseHandle,hFile .endif .endif invoke KillTimer,hWinMain,1 ;取消定期器 ret_Quit ENDP;=====================================================================================================_CreateWindowPROC;注册“查找”对话框消息,初始化“查找”对话框构造 mov stFind.lStructSize,sizeofstFind ;构造长度 push hWinMain pop stFind.hwndOwner ;指定所属窗口 mov stFind.Flags,FR_DOWN ;把“方向”单选钮设立为“向下” mov stFind.lpstrFindWhat,offsetszFindText ;lpstrFindWhat指向包括查找字符串指针 mov stFind.wFindWhatLen,sizeofszFindText ;wFindWhatLen批示lpstrFindWhat缓存区长度 mov stFind.lpstrReplaceWith,offsetszReplaceText ;指向包括替代为字符串指针 mov stFind.wReplaceWithLen,sizeofszReplaceText ;lpstrReplaceWith缓存区长度 invoke RegisterWindowMessage,addrFINDMSGSTRING ;注册自定义消息 mov idFindMessage,eax ;eax中返回消息ID ;建立状态栏 invoke CreateStatusWindow,SBARS_SIZEGRIPorWS_CHILDorWS_VISIBLE,\ ;显示状态栏右下角斜条 NULL,hWinMain,2 ;父窗口为hWinMain,状态栏控件ID为2,初始化字符串为NULL mov hWinStatus,eax invoke SendMessage,hWinStatus,SB_SETPARTS,5,offsetdwStatusWidth ;提成四栏 ;建立输出文本窗口 invoke CreateWindowEx,WS_EX_CLIENTEDGE,offsetclassEdit,NULL,\ ;客户区立体边框 WS_CHILDORWS_VISIBLEORWS_VSCROLLOR WS_HSCROLL\ ORES_MULTILINEorES_NOHIDESEL,\ ;可以编辑多行文字,失去键盘输入焦点时候依然显示选取区域 0,0,0,0,\ hWinMain,0,hInstance,NULL ;0指定是子窗口ID号 mov hWinEdit,eax or dwOption,F_STATUSBAR ;注释 invoke _SetCaption ;设立标题 invoke _SetStatus ;设立状态栏 invoke _SetFont,addrfontFace,9*20,0 ;注释 ;在使用多行Edit控件时,父窗口发送EM_SETEVENTMASK消息给RichEdit控件,指定它对哪些消息感兴趣 ;wParam必要为0,ENM_CHANGE发送EN_CHANGE告知NM_SELCHANGE发送EN_SELCHANGE告知 invoke SendMessage,hWinEdit,EM_SETEVENTMASK,0,ENM_CHANGEorENM_SELCHANGEorENM_MOUSEEVENTS invoke SendMessage,hWinEdit,EM_EXLIMITTEXT,0,-1 ;设立控件中可以容纳字符总数,0FFFFFFFFh(-1)字节 invoke SendMessage,hWinMain,EM_EMPTYUNDOBUFFER,0,0 ;清空undo,redo队列 ret_CreateWindowENDP;====================================================================================================;窗口过程_ProcWinMain PROC usesebxediesihWnd,uMsg,wParam,lParam local @stRange:CHARRANGE local @stST:SYSTEMTIME local @szBuffer[128]:byte local @pt:POINT local hPopup:DWORD local @stES:EDITSTREAM mov eax,uMsg .ifeax==WM_CREATE push hWnd pop hWinMain invoke _CreateWindow invoke SetTimer,hWinMain,1,300,NULL ;设立定期器 .elseif eax==WM_DROPFILES ;拖放文献 call _CheckModifyState .ifeax==FALSE call _SaveFile .endif invoke DragQueryFile,wParam,0,addrszFileName,128 ;获取文献途径 invoke CreateFile,addrszFileName,GENERIC_READorGENERIC_WRITE,\ FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 ;打开文献 mov hFile,eax mov @stES.dwCookie,TRUE ;在Richedit流操作中读文献 mov @stES.dwError,NULL mov @stES.pfnCallback,offset_StreamProcIn invoke SendMessage,hWinEdit,EM_STREAMIN,SF_TEXT,addr@stES ;流入操作,文本格式是简朴文本格式 invoke SendMessage,hWinEdit,EM_SETMODIFY,FALSE,0 ;设立修改状态 call _SetCaption call _SetStatus .elseifeax==WM_TIMER invoke GetLocalTime,addr@stST movzx eax,@stST.wHour movzx ebx,@stST.wMinute movzx ecx,@stST.wSecond invoke wsprintf,addr@szBuffer,addrtimeFormat,eax,ebx,ecx invoke SendMessage,hWinStatus,SB_SETTEXT,3,addr@szBuffer .elseifeax==WM_SIZE invoke _Resize .elseifeax==WM_NOTIFY mov eax,lParam mov eax,[eax+NMHDR.hwndFrom] .if eax==hWinEdit invoke _SetStatus .endif push esi mov esi,lParam assume esi:ptr NMHDR .if[esi].code==EN_MSGFILTER ;鼠标滑轮发送消息 assumeesi:ptrMSGFILTER .if[esi].msg==WM_RBUTTONDOWN invoke GetMenu,hWinMain ;获取窗口主菜单句柄 invoke GetSubMenu,eax,1 ;获取弹出式子菜单句柄 mov hPopup,eax invoke _SetStatus mov edx,[esi].lParam ;位置信息 mov ecx,edx and edx,0FFFFh shr ecx,16 mov @pt.x,edx mov @pt.y,ecx invoke ClientToScreen,hWinMain,addr@pt invoke TrackPopupMenu,hPopup,TPM_LEFTALIGNorTPM_BOTTOMALIGN,@pt.x,@pt.y,NULL,hWinMain,NULL .endif .endif pop esi .elseif eax==WM_MENUSELECT invoke MenuHelp,WM_MENUSELECT,wParam,lParam,lParam,hInstance,hWinStatus,offsetdwMenuHelp .elseifeax==WM_COMMAND mov eax,wParam movzx eax,ax .ifeax==IDM_OPEN invoke _CheckModifyState .ifeax ;eax==TRUE阐明没有被修改 call _OpenFile .endif .elseifeax==IDM_NEW invoke _CheckModifyState .if eax .if hFile invoke CloseHandle,hFile mov hFile,0 .endif mov szFileName,0 invoke SetWindowText,hWinEdit,NULL invoke _SetCaption invoke _SetStatus .endif .elseif eax==IDM_SAVE call _SaveFile .elseif eax==IDM_SAVEAS call _SaveAs .elseif eax==IDM_EXIT call _Quit .elseif eax==IDM_UNDO invoke SendMessage,hWinEdit,EM_UNDO,0,0 .elseif eax==IDM_SELECTALL mov @stRange.cpMin,0 mov @stRange.cpMax,-1 invoke SendMessage,hWinEdit,EM_EXSETSEL,0,addr@stRange .elseif eax==IDM_COPY invoke SendMessage,hWinEdit,WM_COPY,0,0 .elseif eax==IDM_CUT invoke SendMessage,hWinEdit,WM_CUT,0,0 .elseif eax==IDM_PASTE invoke SendMessage,hWinEdit,WM_PASTE,0,0 .elseif eax==IDM_FIND and stFind.Flags,notFR_DIALOGTERM ;FR_DIALOGTERM代表取消按钮 invoke FindText,addrstFind .if eax mov hFindDialog,eax .endif .elseif eax==IDM_FONT invoke _ChooseFont .elseif eax==IDM_STATUSBAR xor dwOption,F_STATUSBAR ;注释 invoke _Resize .elseif eax ==IDM_HELP invoke MessageBox,NULL,offsethelpText,offsethelpTitle,MB_OKorMB_ICONQUESTION .elseif eax==IDM_ABOUT invoke MessageBox,NULL,offsetaboutText,offsetaboutTitle,MB_OK .endif .elseif eax== idFindMessage .if stFind.Flags&FR_DIALOGTERM mov hFindDialog,0 .else invoke _FindText .endif .elseif eax== WM_ACTIVATE ;窗口激活 mov eax,wParam .if (ax== WA_CLICKACTIVE)||(ax==WA_ACTIVE) ;由鼠标点击激活或被鼠标点击以外办法激活 invoke SetFocus,hWinEdit .endif .elseif eax==WM_CLOSE call _Quit .else invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .endif xor eax,eax ret _ProcWinMain ENDP;====================================================================================================_WinMainPROC local@stWndClass:WNDCLASSEX local@stMsg:MSG local@hAccelerator invokeGetModuleHandle,NULL ;得到应用程序句柄 mov hInstance,eax invokeLoadMenu,hInstance,IDM_MAIN ;加载菜单,IDM_MAIN指定要装入菜单资源ID mov hMenu,eax ;eax返回菜单句柄 invokeLoa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届云南省高二上物理期中检测试题含解析
- 城市道路品质提升工程方案
- 通 用机场新建工程项目环境影响报告书(范文参考)
- 2027届内蒙古赤峰市第二中学高二物理第一学期期末综合测试模拟试题含解析
- 广西桂林市十八中学2027届高二物理第一学期期中预测试题含解析
- 校园社团文化艺术节策划方案
- 生产安全双重预防体系建设方案
- 热电联产项目环境影响报告书
- 2027届江西省抚州市南城一中物理高二第一学期期末监测试题含解析
- 2026年炸鸡店的供应链管理与成本控制
- 2025边缘计算与人工智能应用开发技术
- 《中国古代宗教》课件
- 2024年秋季学期新人教版八年级上册物理课件第一章 机械运动 1.4 速度的测量
- 新陕旅版五年级英语上教学计划
- DL-T5394-2021电力工程地下金属构筑物防腐技术导则
- 教科版科学三年级下册第一单元《 物体的运动》测试卷附答案(黄金题型)
- 长护险信息管理制度
- 译林版小学英语二年级上册全册课件
- GB/T 15820-1995聚乙烯压力管材与管件连接的耐拉拔试验
- 本科毕业论文的写作课件
- 技术的性质 课件 高中通用技术苏教版(2019)必修《技术与设计1》
评论
0/150
提交评论