注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

Win32汇编源代码FirstWindow  

2011-03-15 22:42:24|  分类: Win32汇编学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

.386
.model flat,stdcall
option casemap:none


include  windows.inc
include  user32.inc
include  kernel32.inc
includelib  user32.lib
includelib  kernel32.lib


.data?
hInstance dd ?
hWinMain dd ?


.const
szClassName db 'MyClass',0
szCaptionMain db 'My First Window!',0
szText  db 'Win32 Assembly,Simple and powerful!',0


.code
_ProcWinMain proc  uses ebx edi esi hWnd,uMsg,wParam,lParam
 
 LOCAL @stPs:PAINTSTRUCT
 LOCAL  @stRect:RECT
 LOCAL  @hDc
 
 mov eax,uMsg
 .if eax == WM_PAINT
  invoke BeginPaint,hWnd,addr @stPs
  mov @hDc,eax
  
  invoke GetClientRect,hWnd,addr @stRect
  invoke DrawText,@hDc,addr szText,-1,\
   addr @stRect,\
   DT_SINGLELINE or DT_CENTER or DT_VCENTER
  invoke EndPaint,hWnd,addr @stPs
 .elseif eax == WM_CLOSE
  invoke DestroyWindow,hWnd
  invoke PostQuitMessage,NULL
 .else
  invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  ret
 .endif
 
 xor  eax,eax
 ret

_ProcWinMain endp

_WinMain  proc
 
 LOCAL @stWndClass:WNDCLASSEX
 LOCAL  @stMsg:MSG
 
 invoke GetModuleHandle,NULL
 mov hInstance,eax
 
 invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
; invoke LoadCursor,0,IDC_ARROW
; mov @stWndClass.hCursor,eax
 push hInstance
 pop @stWndClass.hInstance
 mov @stWndClass.cbSize,sizeof WNDCLASSEX
 mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
 mov @stWndClass.lpfnWndProc,offset _ProcWinMain
 mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
 mov @stWndClass.lpszClassName,offset szClassName
 
 invoke RegisterClassEx,addr @stWndClass
 
 invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szClassName,offset szCaptionMain,\
  WS_OVERLAPPEDWINDOW,\
  100,100,600,400,\
  NULL,NULL,hInstance,NULL
 mov hWinMain,eax
 invoke ShowWindow,hWinMain,SW_SHOWNORMAL
 invoke UpdateWindow,hWinMain
 
 .while  TRUE
  invoke GetMessage,addr @stMsg,NULL,0,0
  .break .if eax == 0
  invoke TranslateMessage,addr @stMsg
  invoke DispatchMessage,addr @stMsg
 .endw
 ret

_WinMain endp

start:
  call _WinMain
  invoke ExitProcess,NULL
end start

  评论这张
 
阅读(56)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017