Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 汇编语言 > 我的第一个Win32程序
【标  题】:我的第一个Win32程序
【关键字】:Win32
【来  源】:http://blog.csdn.net/dxdraw/archive/2006/11/29/1419755.aspx

我的第一个Win32程序

Your Ad Here

正在学汇编写的第一个窗口,
还是有一点不太懂。

.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
include kernel32.inc
Include gdi32.inc

includelib user32.lib
includelib kernel32.lib
includelib gdi32.lib

include macro.asm

 WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
 WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD


.data
 szTitle db "glzaboy",0
 szClass db "tensoft",0
 main db "这里是main",0
 SUI STARTUPINFO<17*4,>
 ;PI LPPROCESS_INFOMATION <>
 

.data?
 hInstance dd ?

.code

start:
 push NULL
 mov eax,GetModuleHandle
 call eax
 mov hInstance,eax
 invoke WinMain,hInstance,NULL,NULL,SW_SHOWDEFAULT
 
 push 0
 call ExitProcess

WinMain Proc hinstance:DWORD,hPrevInstance:DWORD,lpCmdLine:DWORD,nShowCmd:DWORD
 local wc :WNDCLASSEX
 local msg : MSG
 local hwnd :HWND
 
 mov wc.cbSize,sizeof WNDCLASSEX
 mov wc.style,CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW
 mov wc.lpfnWndProc,offset WndProc
 mov wc.cbClsExtra,NULL
 mov wc.cbWndExtra,NULL
 push hinstance
 pop wc.hInstance
 mov wc.hbrBackground,COLOR_BTNFACE+1
 mov wc.lpszClassName,offset szClass
 mov wc.lpszMenuName,NULL
 invoke LoadIcon,hinstance,102
 mov wc.hIcon,eax
 mov wc.hCursor,NULL
 mov wc.hIconSm,0
 invoke RegisterClassEx, ADDR wc
; invoke CreateWindowEx,NULL,ADDR szClass,offset szTitle,WS_OVERLAPPEDWINDOW,200,200,400,200,NULL,NULL,hinstance,NULL
 invoke CreateWindowEx,NULL,ADDR szClass,CTXT("tenySoft"),WS_OVERLAPPEDWINDOW,200,200,400,200,NULL,NULL,hinstance,NULL
 mov hwnd,eax
 invoke ShowWindow,hwnd,SW_NORMAL
 invoke UpdateWindow,hwnd
 
; StartLoop:
;  invoke GetMessage,ADDR msg,hwnd,0,0
;   cmp eax, 0
;   je ExitLoop
;    invoke TranslateMessage, ADDR msg
;    invoke DispatchMessage, ADDR msg
;   jmp StartLoop
; ExitLoop:
 
 .while TRUE
  invoke GetMessage,ADDR msg,NULL,0,0
  .break .if eax==0
  invoke TranslateMessage, ADDR msg
  invoke DispatchMessage, ADDR msg
 .endw
 ret
WinMain endp

;消息处理

WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
 .if uMsg==WM_CREATE
  ;invoke CreateProcess,CTXT("notepad"),0,0,0,FALSE,0,0,0,offset SUI,offset PI
 .elseif uMsg ==WM_QUIT
 .elseif uMsg == WM_DESTROY
  invoke PostQuitMessage,NULL 
 .else
  invoke DefWindowProc,hWin,uMsg,wParam,lParam
 .endif
 ret
WndProc endp

end start 

 

 

编译成功后只有2.5K的大小。

循环程序设计-实验一 BY KTL:【上一篇】
ASCII 输入模板 By shawl.qiu:【下一篇】
【相关文章】
  • SWT Extension:在Win32平台下运用Java使用注册表和系统钩子
  • 探索Win32系统之窗口类(Window Classes in Win32)
  • 在 Win32 Application 和 Win32 Console Application 中使用 MFC
  • 2:MFC和Win32
  • 查找#ifdef WIN32里面的内容
  • 学习笔记:win32asm的一个简单程序及注释
  • 学习笔记:一个win32asm文本绘制程序及较详细注释
  • 学习笔记:一个win32asm简单的带控件对话框程序及较详细注释
  • Win32 vs. ATL Windows Programming
  • C# 使用WIN32API获取打印机
  • 【随机文章】
  • C复杂声明解析
  • 攻击入侵检测NIDS分析(2)
  • 电脑病毒的摩尔定律
  • asp.net2.0 ajax
  • logo
  • VC下TabCtrl的控制问题解决办法
  • 大卸八块!7800GTX,今天你拆了没?
  • AMD Duron安装redhat linux 6.2成功后无法进入linux的解决办法
  • 物流到底是不是产业—兼论物流企业的界定
  • 最近情况
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.