友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

windows环境下32位汇编语言程序设计-第77章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




; Richedit的流操作

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_ProcStream     proc uses ebx edi esi _dwCookie;_lpBuffer;_dwBytes;_lpBytes

 

                    。if     _dwCookie

                            invoke   ReadFile;hFile;_lpBuffer;_dwBytes;_lpBytes;0

                    。else

                            invoke   WriteFile;hFile;_lpBuffer;_dwBytes;_lpBytes;0

                    。endif

                    xor     eax;eax

                    ret

 

_ProcStream     endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 保存文件,如果没有打开或创建文件则调用“另存为”子程序

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_SaveFile       proc

                    local   @stES:EDITSTREAM

 

                    mov     @stES。dwCookie;FALSE

                    mov     @stES。dwError;NULL

                    mov     @stES。pfnCallback;offset _ProcStream

                    invoke  SendMessage;hWinEdit;EM_STREAMOUT;SF_TEXT;addr @stES

                    invoke  SendMessage;hWinEdit;EM_SETMODIFY;FALSE;0

                    ret

 

_SaveFile       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;offset szFilter

                    mov     @stOF。lpstrFile;offset szFileName

                    mov     @stOF。nMaxFile;MAX_PATH

                    mov     @stOF。Flags;OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST

                    mov     @stOF。lpstrDefExt;offset szDefaultExt

                    invoke  GetOpenFileName;addr @stOF

                    。if     eax

;********************************************************************

; 创建文件

;********************************************************************

                    invoke  CreateFile;addr szFileName;GENERIC_READ or GENERIC_WRITE;

                                 FILE_SHARE_READ or FILE_SHARE_WRITE;0;OPEN_EXISTING;

                            FILE_ATTRIBUTE_NORMAL;0

                    。if     eax   INVALID_HANDLE_VALUE

                            invoke  MessageBox;hWinMain;addr szErrOpenFile;

                                    NULL;MB_OK or MB_ICONSTOP

                            ret

                    。endif

                    push        eax

                    。if     hFile

                            invoke  CloseHandle;hFile

                    。endif

                    pop     eax

                    mov     hFile;eax

;********************************************************************

; 读入文件

;********************************************************************

                                mov     @stES。dwCookie;TRUE

                                mov     @stES。dwError;NULL

                                mov     @stES。pfnCallback;offset _ProcStream

                                invoke  SendMessage;hWinEdit;EM_STREAMIN;

                                        SF_TEXT;addr @stES

                                invoke  SendMessage;hWinEdit;EM_SETMODIFY;FALSE;0

                        。endif

                        ret

 

_OpenFile           endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 允许继续操作则返回TRUE

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_CheckModify            proc

                        local   @dwReturn

 

                        mov     @dwReturn;TRUE

                        invoke  SendMessage;hWinEdit;EM_GETMODIFY;0;0

                        。if     eax && hFile

                        invoke  MessageBox;hWinMain;addr szModify;

                                addr szCaptionMain;

                                MB_YESNOCANCEL or MB_ICONQUESTION

                        。if     eax   IDYES

                                call    _SaveFile

                        。elseif eax   IDCANCEL

                                mov @dwReturn;FALSE

                        。endif

                    。endif

                    mov eax;@dwReturn

                    ret

 

_CheckModify        endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 查找文字

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_FindText       proc

                    local   @stFindText:FINDTEXTEX

 

;********************************************************************

; 设置查找范围

;********************************************************************

                    invoke  SendMessage;hWinEdit;EM_EXGETSEL;

                            0;addr @stFindText。chrg



 
来源:电子工业出版社 作者:罗云彬 上一页         回书目         下一页          
上一页         回书目         下一页          
  


第9章 通用控件


9。4 使用Richedit控件(3)

    
                    。if     stFind。Flags & FR_DOWN

                            push        @stFindText。chrg。cpMax

                            pop     @stFindText。chrg。cpMin

                    。endif

                    mov     @stFindText。chrg。cpMax;…1

;********************************************************************

; 设置查找选项

;********************************************************************

                    mov     @stFindText。lpstrText;offset szFindText

                    mov     ecx;stFind。Flags

                    and     ecx;FR_MATCHCASE or FR_DOWN or FR_WHOLEWORD

;********************************************************************

; 查找并把光标设置到找到的文本上

;********************************************************************

                    invoke  SendMessage;hWinEdit;EM_FINDTEXTEX;

                            ecx;addr @stFindText

                    。if     eax   …1

                            mov     ecx;hWinMain

                            。if     hFindDialog

                                    mov     ecx;hFindDialog

                    。endif

                    invoke  MessageBox;ecx;addr szNotFound;NULL;

                    MB_OK or MB_ICONINFORMATION

                    ret

                。endif

                invoke  SendMessage;hWinEdit;EM_EXSETSEL;

                        0;addr @stFindText。chrgText

                invoke  SendMessage;hWinEdit;EM_SCROLLCARET;NULL;NULL

                ret

 

_FindText   endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!