| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 BinGu 于 2012-1-12 22:58 编辑  
 
 
图标.rar
(1.5 KB, 下载次数: 0)
之前好多人问,怎么把变量变成字符串,这个问题确实难住了好多人!因为汇编语言里面没有wprintf这样的函数,确实让人头疼!但是汇编中有另外一个函数也能做到,相必不少人已经知道哪个函数了,不错,就是wsprintf函数! 
 
wsprintf函数的用法:简单的说就是用wsprintf函数把变量格式化之后放入到缓冲区,然后就再冲缓冲区拿出来就是字符串了!明白了吗?嘿嘿~就是这么简单~~~ 
;代码程序: 
- .386
 
 - .model flat, stdcall
 
 - option casemap:none
 
  
- include windows.inc
 
 - include user32.inc
 
 - includelib user32.lib
 
 - include kernel32.inc
 
 - includelib kernel32.lib
 
  
- DLG_MAIN equ 1
 
 - IDC_CUSTOMTEXT equ 100
 
 - ICO_MAIN equ 1000h
 
  
- .data
 
 - szText db "请输入~!", 0
 
 - szCaption db "123", 0
 
 - szText2 db "wsprintf函数示范", 0
 
  
- .data?
 
 - hInstance dd ?
 
 - szBuffer byte 256 dup (?)
 
  
- .code
 
 - _ProcMain proc uses ebx edi esi hWnd, wMsg, wParam, lParam
 
 - local @szBuffer[256]: BYTE
 
  
- mov eax, wMsg
 
 - .if eax == WM_CLOSE
 
 - invoke EndDialog, hWnd, NULL
 
 - .elseif eax == WM_INITDIALOG
 
 - invoke LoadIcon, hInstance, ICO_MAIN
 
 - invoke SendMessage, hWnd, WM_SETICON, ICON_BIG, eax
 
 - .elseif eax == WM_COMMAND
 
 - mov eax, wParam
 
 - .if ax == IDOK
 
 - invoke GetDlgItemText,hWnd,IDC_CUSTOMTEXT,addr @szBuffer,sizeof @szBuffer
 
 - .if @szBuffer == 0
 
 - invoke SetWindowText, hWnd, addr szText2
 
 - invoke MessageBox, hWnd, addr szText, addr szCaption, MB_OK
 
 - .else
 
 - invoke wsprintf, addr szBuffer, addr @szBuffer
 
 - invoke SetWindowText, hWnd, addr szBuffer
 
 - .endif
 
 - .elseif eax == IDCANCEL
 
 - invoke EndDialog, hWnd, NULL
 
 - .endif
 
 - .else
 
 - mov eax, FALSE
 
 - ret
 
 - .endif
 
 - mov eax, TRUE
 
 - ret
 
  
- _ProcMain endp
 
  
- start:
 
 - invoke GetModuleHandle, NULL
 
 - mov hInstance, eax
 
 - invoke DialogBoxParam, hInstance, DLG_MAIN, NULL, _ProcMain, NULL
 
 - invoke ExitProcess, NULL
 
 - end start
 
  复制代码 
;********************************************************** 
//资源文件:  
- #include                <resource.h>
 
  
- #define                DLG_MAIN                1
 
 - #define                IDC_CUSTOMTEXT                100
 
  
- DLG_MAIN DIALOG 193, 180, 310, 134
 
 - STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
 
 - CAPTION "wsprintf函数示范"
 
 - FONT 9, "宋体"
 
 - {
 
 -         DEFPUSHBUTTON        "Hit Me", IDOK, 58, 46, 50, 14
 
 -         EDITTEXT        IDC_CUSTOMTEXT, 190, 55, 105, 12
 
 - }
 
 
  复制代码 想~~大家应该都能看明白吧! 
 
注意:看代码的时候,直接点击复制代码,然后粘帖到记事本中再看,那样格式就不乱了! 
 该贴已经同步到 BinGu的微博 
 |   
 
 
 
 |