.386
.model flat,stdcall
option casemap:noneinclude  windows.inc
include kernel32.inc
include user32.inc
include gdi32.incincludelib gdi32.lib
includelib  kernel32.lib
includelib  user32.lib.data?hInstance       dd  ?hWinMain       dd  ?.dataszCaption     db  'Different Style Windows',0szClass        db  'WindowStyle',0.constIDC_CUR      equ 1001IDC_MAIN    equ 1002
.code
;****************************************************************************************************
;窗口过程
;****************************************************************************************************
_ProcWinMain    proc    hWnd,uMsg,wParam,lParamLOCAL    @stPs:PAINTSTRUCTLOCAL @stRect:RECTLOCAL  @hdc:HDCmov    eax,uMsg.if eax==WM_PAINTinvoke   BeginPaint,hWnd,addr @stPsmov  @hdc,eaxinvoke GetClientRect,hWnd,addr @stRectinvoke  DrawText,@hdc,addr szCaption,-1,addr @stRect,DT_VCENTER or DT_CENTERinvoke    EndPaint,hWnd,addr @stPs.elseif        eax ==WM_CLOSEinvoke  DestroyWindow,hWndinvoke    PostQuitMessage,NULL.elseinvoke DefWindowProc,hWnd,uMsg,wParam,lParamret    .endifxor   eax,eaxret_ProcWinMain  endp_WinMain        procLOCAL   @stWndClass:WNDCLASSEXLOCAL    @stMsg:MSG
;*******************************************************************************************************
;注册窗口类
;*******************************************************************************************************        invoke  GetModuleHandle,NULLmov hInstance,eaxinvoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass;    给程序添加新的鼠标形状invoke   LoadCursor,hInstance,IDC_CURmov @stWndClass.hCursor,eaxpush    hInstancepop    @stWndClass.hInstancemov   @stWndClass.cbSize,sizeof WNDCLASSEXmov    @stWndClass.style,CS_HREDRAW or CS_HREDRAWmov  @stWndClass.lpfnWndProc,offset _ProcWinMainmov @stWndClass.hbrBackground,COLOR_WINDOW+1mov   @stWndClass.lpszClassName,offset szClass;  给程序添加图标invoke   LoadIcon,hInstance,IDC_MAINmov  @stWndClass.hIcon,eaxinvoke    RegisterClassEx,addr @stWndClass
;*********************************************************************************************************
;建立并显示窗口
;*********************************************************************************************************      invoke  CreateWindowEx,WS_EX_CLIENTEDGE,addr szClass,addr szCaption,WS_OVERLAPPEDWINDOW,100,100,600,400,NULL,NULL,hInstance,NULLmov hWinMain,eaxinvoke  ShowWindow,hWinMain,SW_SHOWNORMALinvoke UpdateWindow,hWinMain;*********************************************************************************************************
;消息循环
;*********************************************************************************************************      .while  TRUEinvoke  GetMessage,addr @stMsg,NULL,0,0.break  .if eax==0invoke  TranslateMessage,addr @stMsginvoke DispatchMessage,addr @stMsg            .endw       ret
_WinMain endpstart: call    _WinMaininvoke  ExitProcess,NULL
end start

使用RADAsm 编写的WIN32 窗口程序,主要用到函数与编辑过程与VC 差不多。WIN32  窗口程序主要分三个部分:

1.窗口过程,用于处理窗口接受到的各种消息。在WIN32汇编中窗口过程的函数格式比较固定 ,主要有三个参数:hWnd:窗口句柄 uMsg:消息类型,wparam,lparam:与消息有关的·

_ProcWinMain proc    hWnd,uMsg,wParam,lParam
_ProcWinWain    endp

2.注册窗口类,填充 WNDCLASSEX 结构,使用CreateWindowEx创建窗口。

3. 死循环创建消息循环。GetMessage, translateMessage,DisPatchMessage

win32汇编--创建窗口程序(RadAsm)相关推荐

  1. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...

  2. 用java创建窗口程序,创建窗口的应用程序

    创建窗口的应用程序 通过前面的基础知识的学习,已经对ctypes库的基本功能学会了使用,为了加强这种知识训练,以及运用刚学习的知识的快乐,我们来创建一个稍稍复杂一点的应用程序.这个应用程序是所有后面应 ...

  3. win32汇编创建线程简单Demo

    代码如下:thread.asm: .386.model flat,stdcalloption casemap:noneinclude windows.inc include user32.inc in ...

  4. 基于Win32Api创建窗口程序

    最近在整理资料, 记得上学期间写得第一个程序是用汇编语言写了个类似HD-COPY的程序, 那个时候真是废寝忘食,程序正常运行后真得让人非常激动, 可惜太久远了找不到代码了, 那个时候有张3寸盘就很不错 ...

  5. C指针原理(23)-win32汇编及.NET调试

    2018-12-28 20:36:07 在WINDOWS系统能用到汇编的机会不多,基本都可以用C或C++代劳,更何况现在MICROSOFT的Visual Studio 系列工具非常强大,WINDOWS ...

  6. win32创建窗口及其消息循环

    转自:http://anyzixin.blog.163.com/blog/static/365289122007103031657355/ http://anyzixin.blog.163.com/b ...

  7. emwin之在中断服务程序中创建窗口的结果

    @2019-04-28 [小记] 使用emwin设计器生成的程序,将该窗口创建放在中断服务程序中出现奇怪现象,非死机但功能间歇性异常,将创建窗口程序放于普通程序中则工作正常 转载于:https://w ...

  8. 【win32汇编】0x04 第一个窗口程序

    第一个win32汇编窗口程序,主要来自 win32汇编语言程序设计,然后加上了自己查阅msdn文档的一些理解,基本过程: start入口地址 --> _WinMain主函数 --> 定义一 ...

  9. Win32汇编——第一个窗口程序

    1.窗口程序的运行模式:消息驱动 2.窗口程序实现大部分功能的代码应该呆在同一个模块中--"消息处理"模块,这个模块可以随时应付所有类型的消息,只有这样才能随时响应用户的各种操作. ...

  10. mysql怎么创建窗口应用程序,Win32子窗口及其创建应用

    简介: 所谓的子窗口就是一个父窗口里的一个窗口,父窗口也叫主窗口.子窗口也是窗口,它有自己的回调函数.自己的窗口类.自己的创建.它位于主窗口里的一个区域,我们可以设置子窗口的大小和位置以及相关属性.子 ...

最新文章

  1. LeetCode Rotate Function(寻找规律)
  2. BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略
  3. kitti数据集_KITTI数据集激光雷达坐标系下的里程计真值
  4. 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33
  5. 【C语言】(数组方式)求n名同学的平均成绩
  6. Nginx基本数据结构之ngx_buf_t
  7. mc服务器隐藏指令显示,服务器常用指令 搬运自Mc服主网
  8. 程序员伪装 AI 编程,竟骗来 2 亿的投资!
  9. 用条件变量实现事件等待器的正确与错误做法
  10. Python I/O及FIle方法
  11. 基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA
  12. JavaScript 弹窗事件
  13. 抓取中央气象台-台风报文数据
  14. Android 官方现代 App 架构指南
  15. IM即时通讯-项目框架搭建(二)
  16. python spacy 安装超时_安装spacy失败
  17. 设置JSP页脚版权标识
  18. Java篇 - 最全BigInteger和BigDecimal实战
  19. 计算机组成原理实验——存储器
  20. 核糖体rRNA分类-功能应用-数据库-Silva

热门文章

  1. React 18 新特性
  2. 【IMU】BMI160 Driver分析及使用
  3. IP地址(定义、分类、掩码及保留地址)
  4. python圣经是哪本_我的圣经:17年前的那本《Python 2.1 宝典》
  5. 图解机器学习:分类模型性能评估指标
  6. JS中将json字符串转为json对象的三种方式
  7. JDK10安装与配置
  8. godot初体验,开源跨平台的神奇游戏引擎。支持python和rust,甚至推出了android端。
  9. godot 编译失败
  10. 微信小程序也可以实现定位打卡/签到打卡了(附源码)