win32汇编--创建窗口程序(RadAsm)
.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)相关推荐
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...
- 用java创建窗口程序,创建窗口的应用程序
创建窗口的应用程序 通过前面的基础知识的学习,已经对ctypes库的基本功能学会了使用,为了加强这种知识训练,以及运用刚学习的知识的快乐,我们来创建一个稍稍复杂一点的应用程序.这个应用程序是所有后面应 ...
- win32汇编创建线程简单Demo
代码如下:thread.asm: .386.model flat,stdcalloption casemap:noneinclude windows.inc include user32.inc in ...
- 基于Win32Api创建窗口程序
最近在整理资料, 记得上学期间写得第一个程序是用汇编语言写了个类似HD-COPY的程序, 那个时候真是废寝忘食,程序正常运行后真得让人非常激动, 可惜太久远了找不到代码了, 那个时候有张3寸盘就很不错 ...
- C指针原理(23)-win32汇编及.NET调试
2018-12-28 20:36:07 在WINDOWS系统能用到汇编的机会不多,基本都可以用C或C++代劳,更何况现在MICROSOFT的Visual Studio 系列工具非常强大,WINDOWS ...
- win32创建窗口及其消息循环
转自:http://anyzixin.blog.163.com/blog/static/365289122007103031657355/ http://anyzixin.blog.163.com/b ...
- emwin之在中断服务程序中创建窗口的结果
@2019-04-28 [小记] 使用emwin设计器生成的程序,将该窗口创建放在中断服务程序中出现奇怪现象,非死机但功能间歇性异常,将创建窗口程序放于普通程序中则工作正常 转载于:https://w ...
- 【win32汇编】0x04 第一个窗口程序
第一个win32汇编窗口程序,主要来自 win32汇编语言程序设计,然后加上了自己查阅msdn文档的一些理解,基本过程: start入口地址 --> _WinMain主函数 --> 定义一 ...
- Win32汇编——第一个窗口程序
1.窗口程序的运行模式:消息驱动 2.窗口程序实现大部分功能的代码应该呆在同一个模块中--"消息处理"模块,这个模块可以随时应付所有类型的消息,只有这样才能随时响应用户的各种操作. ...
- mysql怎么创建窗口应用程序,Win32子窗口及其创建应用
简介: 所谓的子窗口就是一个父窗口里的一个窗口,父窗口也叫主窗口.子窗口也是窗口,它有自己的回调函数.自己的窗口类.自己的创建.它位于主窗口里的一个区域,我们可以设置子窗口的大小和位置以及相关属性.子 ...
最新文章
- LeetCode Rotate Function(寻找规律)
- BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略
- kitti数据集_KITTI数据集激光雷达坐标系下的里程计真值
- 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33
- 【C语言】(数组方式)求n名同学的平均成绩
- Nginx基本数据结构之ngx_buf_t
- mc服务器隐藏指令显示,服务器常用指令 搬运自Mc服主网
- 程序员伪装 AI 编程,竟骗来 2 亿的投资!
- 用条件变量实现事件等待器的正确与错误做法
- Python I/O及FIle方法
- 基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA
- JavaScript 弹窗事件
- 抓取中央气象台-台风报文数据
- Android 官方现代 App 架构指南
- IM即时通讯-项目框架搭建(二)
- python spacy 安装超时_安装spacy失败
- 设置JSP页脚版权标识
- Java篇 - 最全BigInteger和BigDecimal实战
- 计算机组成原理实验——存储器
- 核糖体rRNA分类-功能应用-数据库-Silva