用RadASM开发窗口程序(2)
2016-05-23 17:11
405 查看
首先用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;前者调用的后者;下次再搞;
全部代码如下;
.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:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib WinMain proto :DWORD,:DWORD,:DWORD,:DWORD .data ClassName db "MainWinClass",0 AppName db "Main Window",0 slEdit db "EDIT",0 adrpoem db "七月七日长生殿,夜半无人私语时。",0 adrnxz 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,700 invoke 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,NULL ret EditSl endp Read_File_In proc hEdit:DWORD,lpszFileName:DWORD LOCAL hFile :DWORD LOCAL ofs :OFSTRUCT LOCAL est :EDITSTREAM invoke OpenFile,lpszFileName,ADDR ofs,OF_READ mov hFile, eax mov est.dwCookie, eax mov est.dwError, 0 mov eax, offset ofCallBack mov est.pfnCallback, eax invoke SendMessage,hEdit,EM_STREAMIN,SF_TEXT,ADDR est invoke CloseHandle,hFile invoke SendMessage,hEdit,EM_SETMODIFY,0,0 mov eax, 0 ret Read_File_In endp ofCallBack proc dwCookie:DWORD,pbBuff:DWORD,cb:DWORD,pcb:DWORD invoke ReadFile,dwCookie,pbBuff,cb,pcb,NULL mov eax, 0 ret ofCallBack endp start: invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW 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.lpszMenuName,NULL mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClassEx, addr wc INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\ WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\ CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\ hInst,NULL mov hwnd,eax invoke ShowWindow, hwnd,SW_SHOWNORMAL invoke UpdateWindow, hwnd .WHILE TRUE invoke GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==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 ; .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start
相关文章推荐
- win32下进程间通信(共享内存)实例分析
- WMI中的Win32_PingStatus类(ping命令实现)
- win32安装配置非安装版的MySQL
- 一个win32窗口创建示例
- iis Win32状态数值(sc-win32-status)说明
- nginx win32 版本静态文件测试 (Windows环境)
- C#利用win32 Api 修改本地系统时间、获取硬盘序列号
- C#通过WIN32 API实现嵌入程序窗体
- WIN32程序获取父进程ID的方法
- 实例分析一个简单的Win32程序
- VC程序在Win32环境下动态链接库(DLL)编程原理
- Win32应用程序(SDK)设计原理详解
- python使用win32com库播放mp3文件的方法
- WIN32 贪食蛇改进版,新增计分、等级及暂停功能
- WiFiAssistant 无线承载网络设置助手的开发历程
- Windows AppContainer 降权,隔离与安全
- Win32转制成Win10 UWP应用有哪些好处?Win32转制UWP应用优势汇总
- Win32 调试接口设计与实现浅析
- 理解 Win32 "OutputDebugString"
- Win32串口编程