用RadASM开发窗口程序(2)
首先用RadASM新建一个Win32exe程序,该程序仅是一个窗口。
.data段添加
slEdit db "EDIT",0
adrpoem db "七月七日长生殿,夜半无人私语时。",0
adrnxz db "C:\南乡子.txt",0
.data?段添加
hEdit1 dd ?
hEdit2 dd ?
把RadASM附带的三个proc加入项目;
EditSl
Read_File_In
ofCallBack
看这三个过程的代码,其作用应该大体是:创建编辑框;读文件到编辑框;
在WM_CREATE消息处理中调用,
invoke EditSl,ADDR adrpoem,50,10,350,25,hWnd,700
invoke EditSl,NULL,50,50,350,175,hWnd,700
mov hEdit2,eax
invoke Read_File_In,hEdit2,addr adrnxz
创建文本框,再创建一个文本框,然后读入C盘一个文本文件到第二个编辑框;
构建,运行;
读入文件到编辑框没有成功;
在RadASM菜单中选择 在调试器中运行,看下情况;
也看不出啥,给的文件名是正确的;
那么这两个过程是干嘛的;Read_File_In和ofCallBack;前者调用的后者;下次再搞;
全部代码如下;
.586
.model flat,stdcall
option casemap:noneinclude windows.incinclude user32.incinclude kernel32.incincludelib user32.libincludelib kernel32.libWinMain proto :DWORD,:DWORD,:DWORD,:DWORD.dataClassName db "MainWinClass",0AppName db "Main Window",0slEdit db "EDIT",0adrpoem db "七月七日长生殿,夜半无人私语时。",0adrnxz db "C:\南乡子.txt",0.data?hInstance HINSTANCE ?hEdit1 dd ?hEdit2 dd ? CommandLine LPSTR ?.code; ---------------------------------------------------------------------------EditSl proc szMsg:DWORD,a:DWORD,b:DWORD,wd:DWORD,ht:DWORD,hParent:DWORD,ID:DWORD; EditSl PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
; invoke EditSl,ADDR adrTxt,200,10,150,25,hWnd,700invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR slEdit,szMsg,WS_VISIBLE or WS_CHILDWINDOW or \ES_AUTOHSCROLL or ES_NOHIDESEL,a,b,wd,ht,hParent,ID,hInstance,NULLretEditSl endpRead_File_In proc hEdit:DWORD,lpszFileName:DWORDLOCAL hFile :DWORDLOCAL ofs :OFSTRUCTLOCAL est :EDITSTREAMinvoke OpenFile,lpszFileName,ADDR ofs,OF_READmov hFile, eaxmov est.dwCookie, eaxmov est.dwError, 0mov eax, offset ofCallBackmov est.pfnCallback, eaxinvoke SendMessage,hEdit,EM_STREAMIN,SF_TEXT,ADDR estinvoke CloseHandle,hFileinvoke SendMessage,hEdit,EM_SETMODIFY,0,0mov eax, 0retRead_File_In endpofCallBack proc dwCookie:DWORD,pbBuff:DWORD,cb:DWORD,pcb:DWORDinvoke ReadFile,dwCookie,pbBuff,cb,pcb,NULLmov eax, 0retofCallBack endpstart:invoke GetModuleHandle, NULLmov hInstance,eaxinvoke GetCommandLinemov CommandLine,eaxinvoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULTinvoke ExitProcess,eaxWinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORDLOCAL wc:WNDCLASSEXLOCAL msg:MSGLOCAL hwnd:HWNDmov wc.cbSize,SIZEOF WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAWmov wc.lpfnWndProc, OFFSET WndProcmov wc.cbClsExtra,NULLmov wc.cbWndExtra,NULLpush hInstancepop wc.hInstancemov wc.hbrBackground,COLOR_BTNFACE+1mov wc.lpszMenuName,NULLmov wc.lpszClassName,OFFSET ClassNameinvoke LoadIcon,NULL,IDI_APPLICATIONmov wc.hIcon,eaxmov wc.hIconSm,eaxinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor,eaxinvoke RegisterClassEx, addr wcINVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\hInst,NULLmov hwnd,eaxinvoke ShowWindow, hwnd,SW_SHOWNORMALinvoke UpdateWindow, hwnd.WHILE TRUEinvoke GetMessage, ADDR msg,NULL,0,0.BREAK .IF (!eax)invoke TranslateMessage, ADDR msginvoke DispatchMessage, ADDR msg.ENDWmov eax,msg.wParamret
WinMain endpWndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM.IF uMsg==WM_DESTROYinvoke PostQuitMessage,NULL.ELSEIF uMsg==WM_CREATEinvoke EditSl,ADDR adrpoem,50,10,350,25,hWnd,700invoke EditSl,NULL,50,50,350,175,hWnd,700mov hEdit2,eaxinvoke Read_File_In,hEdit2,addr adrnxz;.ELSEinvoke DefWindowProc,hWnd,uMsg,wParam,lParam ret.ENDIFxor eax,eaxret
WndProc endpend start
用RadASM开发窗口程序(2)相关推荐
- 用RadASM 开发窗口程序
用RadASM新建一个项目:选择Win32exe模板: 一 在窗体上输出文字 在.data区添加 szText db '小狗狗,小兔兔,小猫猫 !',0 在WM_PAINT消息处理段中添加 invok ...
- c语言开发窗口程序,怎么用c语言做一个界面?
https://m.zjurl.cn/answer/6697137038547747083/?app=news_article&app_id=26&share_ansid=669713 ...
- WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...
1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...
- 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )
文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...
- Windows游戏开发感想一个完整的Windows窗口程序
现在的互联网行业从事Windows游戏开发的人实在是太少了.一是因为门槛较高,游戏行业本来就是互联网行业最尖端的领域,要想从事游戏开发,不仅要掌握一门过硬的语言,尤其是对C++的精通,还要对算法非常精 ...
- linux 易语言窗口程序_易语言开发Linux程序
令人兴奋的是易语言可以开发Linux程序,易语言是一个跨平台的开发工具,支持Windows及Linux.使用易语言开发Linux程序,您可以在Windows环境下编写基本于Windows的程序,及编写 ...
- c语言开发窗口应用程序
转载于:https://blog.csdn.net/liu_rong_fei/article/details/51271901 视频下载地址:链接: http://pan.baidu.com/s/1q ...
- linux 易语言窗口程序_用易语言开发Linux程序的方法
漫溃廉江欧洲恺撒哈博浑饨?农区南雄青枫沙袋风行画行全盘.赁租落子淋雨长笑林登联氨.欠身双黄妹妹稠密平摊麻乱封杀,蹦极四友萌芽布鞋魔符采制.馆子恭喜乐天内绘磨勘泪液旁出并且! 全盟女神功曹使劲信徒,用易 ...
- 使用IDEA开发Servlet程序
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
最新文章
- zookeeper集群环境搭建
- 第七课.含隐变量的参数估计
- Windows 技术篇-设置电脑启用或禁用开机按Ctrl+Alt+Del解除锁定
- 图的dfs非递归_如何理解恶心的递归
- android下创建文件夹和修改其权限的方法
- I/0口输入输出实验 将P1口的某一位作为输入使用,连接一个按键,当按键按下时使发光二极管亮,否则发光二极管熄灭
- 服务器无法拖动文件复制文件,​IT服务器运维:艾锑人为您整理Win10系统下移动、复制、删除文件需要管理员权限的解决方法...
- Python HTMLTestRunner生成网页自动化测试报告时中文编码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6...
- 用于快速排查Java的CPU性能问题(top us值过高)
- A simple Android example,including Intent/View/...
- python复盘之windows环境的安装
- 鼠标滚轮机械编码器原理
- PostgreSQL 配置文件 postgresql.conf 及 postgresql.auto.conf
- linux 文件锁 超时,Linux中的两种文件锁——协同锁与强制锁
- 【21考研】计算机/软件等专业调剂信息集合!【完结版】
- 01蓝桥杯特训课程第一次总结
- Outlook 阿里邮箱 重复收取邮件 的情况 及解决方案
- 岁月的剪影【四月尘土飞扬】
- 《创业大赛》—微电影影评
- 如何修复mp4a编码音频
热门文章
- ApplicationContext||ApplicationContext与BeanFactory的区别||SpringContextUtil类的作用
- Servlet流程总结
- pageX,clientX,offsetX,layerX的区别
- 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程
- Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法
- Python 技术篇-使用PyQt5库获取电脑屏幕桌面的宽、高和分辨率
- Python 技术篇-按任意格式灵活获取日期、时间、年月日、时分秒。日期格式化。
- CTFshow 命令执行 web36
- 常用数据库的Jdbc连接代码
- RANSC算法(随机样本一致性)