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

windows环境下32位汇编语言程序设计-第35部分

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



                   。386

                   。model flat; stdcall

                   option casemap :none

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

; Include 文件定义

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

include            windows。inc‘

include            user32。inc

includelib         user32。lib

include            kernel32。inc

includelib         kernel32。lib

include            dlg32。inc

includelib         dlg32。lib

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

; Equ 等值定义

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

ICO_MAIN           equ  1000

DLG_MAIN           equ  1000

IDM_MAIN           equ  1000

IDM_OPEN           equ  1101

IDM_SAVEAS         equ  1102

IDM_PAGESETUP      equ  1103

IDM_EXIT           equ  1104

IDM_FIND           equ  1201

IDM_REPLACE        equ  1202

IDM_SELFONT        equ  1203

IDM_SELCOLOR       equ  1204

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

; 数据段

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

                           。data?

hInstance          dd        ?

hWinMain           dd        ?

dwFontColor        dd        ?

dwBackColor        dd        ?

dwCustColors       dd        16 dup (?)

stLogFont          LOGFONT          

szFileName         db        MAX_PATH dup (?)

szBuffer           db        1024 dup (?)

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

; 查找替换对话框使用

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

idFindMessage      dd      ?

stFind             FINDREPLACE      

szFindText         db      100   dup (?)

szReplaceText      db      100   dup (?)

                   nst

FINDMSGSTRING      db      'mdlg_FindReplace';0

szSaveCaption      db      '请输入保存的文件名';0

szFormatColor      db      '您选择的颜色值:%08x';0

szFormatFont       db      '您的选择:';0dh;0ah;'字体名称:%s';0dh;0ah

                   db      '字体颜色值:%08x,字体大小:%d';0

szFormatFind       db      '您按下了“%s”按钮';0dh;0ah;'查找字符串:%s';0dh;0ah

                   db      '替换字符串:%s';0

szFormatPrt        db      '您选择的打印机:%s';0

szCaption          db      '执行结果';0

szFindNext         db      '查找下一个';0

szReplace          db      '替换';0

szReplaceAll       db      '全部替换';0

szFilter           db      'Text Files(*。txt)';0;'*。txt';0

                   db      'All Files(*。*)';0;'*。*';0;0

szDefExt           db      'txt';0

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

; 代码段

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

                   de

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

; 页面设置对话框

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

_PageSetup         proc

                   local   @stPS:PAGESETUPDLG

 



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


第8章 通用对话框


8。1 通用对话框简介(2)

    
                   invoke RtlZeroMemory;addr @stPS;sizeof @stPS

                   mov    @stPS。lStructSize;sizeof @stPS

                   push   hWinMain

                   pop    @stPS。hwndOwner

                   invoke PageSetupDlg;addr @stPS

                   。if    eax && @stPS。hDevMode

                          mov   eax;@stPS。hDevMode

                          mov   eax;'eax'

                          invoke wsprintf;addr szBuffer;addr szFormatPrt;eax

                          invoke MessageBox;hWinMain;addr szBuffer;

                                addr szCaption;MB_OK

                   。endif

                   ret

 

_PageSetup         endp

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

; 显示“保存”文件对话框

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

_SaveAs            proc

                   local  @stOF:OPENFILENAME

 

                   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_PATHMUSTEXIST

                   mov    @stOF。lpstrDefExt;offset szDefExt

                   mov    @stOF。lpstrTitle;offset szSaveCaption

                   invoke GetSaveFileName;addr @stOF

                   。if    eax

                          invoke   MessageBox;hWinMain;addr szFileName;

                                  addr szCaption;MB_OK

                   。endif

                   ret

 

_SaveAs            endp

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

; 显示“打开”文件对话框

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

_OpenFile          proc

                   local  @stOF:OPENFILENAME

 

                   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

                   invoke GetOpenFileName;addr @stOF

                   。if    eax

                          invoke    MessageBox;hWinMain;addr szFileName;

                                    addr szCaption;MB_OK

                   。endif

                   ret

 

_OpenFile          endp

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

; 选择颜色

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

_ChooseColor       proc

                   local  @stCC:CHOOSECOLOR

 

                   invoke RtlZeroMemory;addr @stCC;sizeof @stCC

                   mov    @stCC。lStructSize;sizeof @stCC

                   push   hWinMain

                   pop    @stCC。hwndOwner

                   push   dwBackColor

                   pop    @stCC。rgbResult

                   mov    @stCC。Flags;CC_RGBINIT or CC_FULLOPEN

                   mov    @stCC。lpCustColors;offset dwCustColors

                   invoke ChooseColor;addr @stCC

                   。if    eax

                          push  @stCC。rgbResult

                          pop   dwBackColor

                           invoke  wsprintf;addr szBuffer;addr szFormatColor;

                                dwBackColor

                          invoke MessageBox;hWinMain;addr szBuffer;

                                addr szCaption;MB_OK

                   。endif

                   ret

 

_ChooseColor       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;offset stLogFont

                   push   dwFontColor

                   pop    @stCF。rgbColors

                   mov     @stCF。Flags;CF_SCREENFONTS or CF_INITTOLOGFONTSTRUCT

                          or CF_EFFECTS

                   invoke ChooseFont;addr @stCF

                   。if    eax

                          push  @stCF。rgbColors

                          pop   dwFontColor

                          mov   eax;@stCF。iPointSize

                          shl   eax;1

                              invoke  wsprintf;addr szBuffer;addr szFormatFont;

                                addr stLogFont。lfFaceName;

                                dwFontColor;eax

                          invoke MessageBox;hWinMain;addr szBuffer;

                                addr szCaption;MB_OK

                   。endif

                   ret

 

_ChooseFont        endp

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

_ProcDlgMain       proc    uses ebx edi esi hWnd;wMsg;wParam;lParam

                   local   @szBuffer'128':byte

 

                   mov     eax;wMsg

                   。if     eax    WM_CLOSE

                           invoke   EndDialog;hWnd;NULL

                   。elseif eax    WM_INITDIALOG

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

; 注册“查找”对话框消息,初始化“查找”对话框的结构

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

                          mov   eax;hWnd

                          mov   hWinMain;eax

                          mov   stFind。hwndOwner;eax

                          mov   stFind。lStructSize;sizeof stFind



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


第8章 通用对话框


8。1 通用对话框简介(3)

    
                       mov      stFind。Flags;FR_DOWN

                       mov        stFind。lpstrFindWhat;offset szFindText

                       mov      stFind。wFindWhatLen;sizeof szFindText

                         mov       stFind。lpstrReplaceWith;offset szReplaceText

                           mov        stFind。wReplaceWithLen;sizeof szReplaceText

                       invoke     RegisterWindowMessage;addr FINDMSGSTRING

                       mov      idFindMessage;eax

               。elseif eax    WM_MAND

                       mov      eax;wParam

                       。if      ax    IDM_EXIT

                                invoke  EndDialog;hWnd;NULL

                       。elseif  ax    IDM_OPEN

                                invoke  _OpenFile

                       。elseif  ax    IDM_SAVEAS

                                invoke  _SaveAs

                       。elseif  ax    IDM_PAGESETUP

                                invoke  _PageSetup

                       。elseif  ax    IDM_FIND

                                and     stFind。Flags;not FR_DIALOGTERM

                                invoke  FindText;addr stFind

                       。elseif  ax    IDM_REPLACE

                                and     stFind。Flags;not FR_DIALOGTERM

                                invoke  ReplaceText;addr stFind

                       。elseif  ax    IDM_SELFONT

                                invoke  _ChooseFont

                       。elseif  ax    IDM_SELCOLOR

                                invoke  _ChooseColor

                       。endif

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

               。elseif eax    idFindMessage

                       xor      ecx;ecx

                       。if      stFind。Flags & FR_FINDNEXT

                                mov     ecx;offset szFindNext

                       。elseif  stFind。Flags & FR_REPLACE

                                mov     ecx;offset szReplace

                       。elseif  stFind。Flags & FR_REPLACEALL

                                mov     ecx;offset szReplaceAll

                       。endif

                       。if      ecx

                                invoke wsprintf;addr szBuffer;

                                        addr szFormatFind;

                                        ecx;addr szFindText;addr szReplaceText

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