日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用RadASM开发窗口程序(2)

發布時間:2025/4/14 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。