罗云彬的书第一个窗口程序的两个问题

qq_33892956 2016-03-13 10:35:39
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 4th Edition>
; by 罗云彬, luoyunbin@hotmail.com
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; FirstWindow.asm
; 窗口程序的模板代码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff FirstWindow.asm
; Link /subsystem:windows FirstWindow.obj
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include gdi32.inc
include user32.inc
include kernel32.inc

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hInstance dd ?
hWinMain dd ?

.const
szClassName db 'MyClass',0
szCaptionMain db 'My first Window !',0
szText db 'Win32 Assembly, Simple and powerful !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 窗口过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcWinMain proc uses ebx edi esi hWnd,uMsg,wParam,lParam
local @stPs:PAINTSTRUCT
local @stRect:RECT
local @hDc

mov eax,uMsg
;********************************************************************
.if eax == WM_PAINT
invoke BeginPaint,hWnd,addr @stPs
mov @hDc,eax

invoke GetClientRect,hWnd,addr @stRect
invoke DrawText,@hDc,addr szText,-1,\
addr @stRect,\
DT_SINGLELINE or DT_CENTER or DT_VCENTER

invoke EndPaint,hWnd,addr @stPs
;********************************************************************
.elseif eax == WM_CLOSE
invoke DestroyWindow,hWinMain
invoke PostQuitMessage,NULL
;********************************************************************
.else
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.endif
;********************************************************************
xor eax,eax
ret

_ProcWinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_WinMain proc
local @stWndClass:WNDCLASSEX
local @stMsg:MSG

invoke GetModuleHandle,NULL
mov hInstance,eax
invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
;********************************************************************
; 注册窗口类
;********************************************************************
invoke LoadCursor,0,IDC_ARROW
mov @stWndClass.hCursor,eax
push hInstance
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof WNDCLASSEX
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
mov @stWndClass.lpszClassName,offset szClassName
invoke RegisterClassEx,addr @stWndClass
;********************************************************************
; 建立并显示窗口
;********************************************************************
invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szClassName,offset szCaptionMain,\
WS_OVERLAPPEDWINDOW,\
100,100,600,400,\
NULL,NULL,hInstance,NULL
mov hWinMain,eax
invoke ShowWindow,hWinMain,SW_SHOWNORMAL
invoke UpdateWindow,hWinMain
;********************************************************************
; 消息循环
;********************************************************************
.while TRUE
invoke GetMessage,addr @stMsg,NULL,0,0
.break .if eax == 0
invoke TranslateMessage,addr @stMsg
invoke DispatchMessage,addr @stMsg
.endw
ret

_WinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
call _WinMain
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start


问题一:如上,
.elseif	eax ==	WM_CLOSE
invoke DestroyWindow,hWinMain
invoke PostQuitMessage,NULL


这里sdk里面对应的代码是
case WM_DESTROY:
PostQuitMessage(0);
return 0;

为什么不一样?

问题二:
_ProcWinMain proc uses ebx edi esi ,hWnd,uMsg,wParam,lParam这里面为什么要有ebx edi esi?没见到下面的过程用到啊
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2016-03-14
  • 打赏
  • 举报
回复
第一个,你放错位置了吧,要在最后的 .else 语句之前,和其它的 .elseif 并行。
第二个,更不应该了,除非是你写错了。
还有疑问,将这两个前后内容以及编译报错信息放上来看看。
qq_33892956 2016-03-14
  • 打赏
  • 举报
回复
引用 1 楼 zara 的回复:
问题一:看 WM_CLOSE 的说明,默认的处理就是调用 DestroyWindow();用户自己处理,至少可以用来确认下是不是真的要退出。所以,这样的处理,后果是一样的吧。 问题二:这个代码只是个最简单的示例,是没有用到;以后功能的扩展,用到的可能就多了,所以干脆一开始就写上,免得后面用到了却又忘了补上导致出错,要是一时没想到这个因素会纠结好久都不一定能明白症结所在。
我分别做过实验,问题一如果我这样写 .elseif eax == WM_DESTROY invoke PostQuitMessage,NULL 编译就通不过,按你的说法,就说不通 问题二同样,如果我这样写 _ProcWinMain proc hWnd,uMsg,wParam,lParam 同样报错
zara 2016-03-14
  • 打赏
  • 举报
回复
问题一:看 WM_CLOSE 的说明,默认的处理就是调用 DestroyWindow();用户自己处理,至少可以用来确认下是不是真的要退出。所以,这样的处理,后果是一样的吧。
问题二:这个代码只是个最简单的示例,是没有用到;以后功能的扩展,用到的可能就多了,所以干脆一开始就写上,免得后面用到了却又忘了补上导致出错,要是一时没想到这个因素会纠结好久都不一定能明白症结所在。
qq_33892956 2016-03-14
  • 打赏
  • 举报
回复
引用 7 楼 zara 的回复:
我是用 masm32v7 来做的,不是 vs,手头也没 vs。 如果还要坚持,将第二个有问题的 exe 上传来看看?
有你这句话就够了
zara 2016-03-14
  • 打赏
  • 举报
回复
我是用 masm32v7 来做的,不是 vs,手头也没 vs。
如果还要坚持,将第二个有问题的 exe 上传来看看?
qq_33892956 2016-03-14
  • 打赏
  • 举报
回复
引用 5 楼 zara 的回复:
你前面说是编译就出错,现在又说是运行了窗口看不见,没有的事,我试了都正常的显示退出;尤其是第一个,不可能影响到窗口显示的,对 WM_CLOSE 的处理不当,最多就是对正常退出响应异常。
我之前说编译报错是无意识的话语,不必计较。下面上图,我运行是按ctrl+f5,两个版本的程序明显不一样,我也不知道为啥
zara 2016-03-14
  • 打赏
  • 举报
回复
你前面说是编译就出错,现在又说是运行了窗口看不见,没有的事,我试了都正常的显示退出;尤其是第一个,不可能影响到窗口显示的,对 WM_CLOSE 的处理不当,最多就是对正常退出响应异常。
qq_33892956 2016-03-14
  • 打赏
  • 举报
回复
引用 3 楼 zara 的回复:
第一个,你放错位置了吧,要在最后的 .else 语句之前,和其它的 .elseif 并行。 第二个,更不应该了,除非是你写错了。 还有疑问,将这两个前后内容以及编译报错信息放上来看看。
第一个,我就是在原来的WM_CLOSE的位置上改的WM_DESTROY,报错是没报错,还显示成功了,但是点击运行什么都没发生,窗口也看不见。就这样。改回成WM_CLOSE就能正常运行。 第二个,改成_ProcWinMain proc hWnd,uMsg,wParam,lParam效果同第一个,什么都没发生
-------------------------- 我是汇编爱好者 QQ695367480 高手别找我了 我是菜鸟。 -------------------------- 内容简介: Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。本从编写应用程序的角度,从“Hello World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过60多个实例逐渐深入Win32汇编语言的方方面面。本作者罗云彬拥有十余年汇编语言编程经验,是汇编编程网站http://asm.yeah.net和汇编编程论坛http://win32asm.yeah.net的站长。本是作者多年来编程工作的总结,适合于欲通过Win32汇编语言编写Windows程序的读者。 第1章 背景知识 1.1 Win32的软硬件平台(1) 1.1 Win32的软硬件平台(2) 1.2 Windows的特色 1.3 必须了解的东西(1) 1.3 必须了解的东西(2) 1.3 必须了解的东西(3) 1.3 必须了解的东西(4) 1.3 必须了解的东西(5) 第2章 准备编程环境 2.1 Win32可执行文件的开发过程 2.2 编译器和链接器(1) 2.2 编译器和链接器(2) 2.2 编译器和链接器(3) 2.3 创 建 资 源 2.4 make工具的用法(1) 2.4 make工具的用法(2) 2.5 获 取 资 料 2.6 构建编程环境 第3章 使用MASM 当搭建编译和对编译器的使用不再成为绊脚石的时候,初学者的问题往往集中在对Windows程序结构的迷惑上,消息驱动体系、窗口过程、与硬件隔绝的图形接口及资源文件等相对于DOS程序来说都是全新的内容,接下来的4章将深入讨论这些内容,通过这几章,读者应该开始习惯以Windows的方式考虑问题了(脑海中的DOS逐渐远去...),这就是本的初级篇: 3.1 Win32汇编源程序的结构(1) 3.1 Win32汇编源程序的结构(2) 3.1 Win32汇编源程序的结构(3) 3.2 调用API(1) 3.2 调用API(2) 3.2 调用API(3) 3.3 标号、变量和数据结构(1) 3.3 标号、变量和数据结构(2) 3.3 标号、变量和数据结构(3) 3.3 标号、变量和数据结构(4) 3.3 标号、变量和数据结构(5) 3.4 使用子程序 3.5 高 级 语 法(1) 3.5 高 级 语 法(2) 3.6 代 码 风 格(1) 3.6 代 码 风 格(2) 第4章 第一个窗口程序 4.1 开始了解窗口(1) 4.1 开始了解窗口(2) 4.1 开始了解窗口(3) 4.2 分析窗口程序(1) 4.2 分析窗口程序(2) 4.2 分析窗口程序(3) 4.2 分析窗口程序(4) 4.2 分析窗口程序(5) 4.3 窗口间的消息互发 4.4 实 验(1) 4.4 实 验(2) 4.4 实 验(3) 第5章 使用资源 5.1 菜单和加速键(1) 5.1 菜单和加速键(2) 5.1 菜单和加速键(3) 5.1 菜单和加速键(4) 5.1 菜单和加速键(5) 5.1 菜单和加速键(6) 5.1 菜单和加速键(7) 5.2 图标和光标(1) 5.2 图标和光标(2) 5.3 位 图 5.4 对 话 框(1) 5.4 对 话 框(2) 5.4 对 话 框(3) 5.4 对 话 框(4) 5.4 对 话 框(5) 5.4 对 话 框(6) 5.4 对 话 框(7) 5.4 对 话 框(8) 5.4 对 话 框(9) 5.4 对 话 框(10) 5.4 对 话 框(11) 5.5 字符串资源/5.6 版本信息资源(1) 5.6 版本信息资源(2) 5.7 二进制资源和自定义资源 第6章 定时器 6.1 定时器简介/6.2 定时器的使用(1) 6.2 定时器的使用(2) 6.3 取Windows时间 第7章 图形操作 Windows系统不像DOS系统,它的应用程序界面是规范化的,统一的界面来自大量的系统界面控件,学习这些控件就等于学习如何编写Windows界面,下面的界面篇中的两章将探讨这方面的内容: 7.1 GDI原理(1) 7.1 GDI原理(2) 7.1 GDI原理(3) 7
Windows环境下32位汇编语言程序设计 第2版(罗文斌) 完整光盘内容,包含每章内容的完整代码 本光盘所包含目录的说明 根目录下的 *.pdf ;附录A、B、C的电子版文档 Chapter02\Test ;测试编译环境 Chapter03\HelloWorld ;Hello World Chapter04\FirstWindow ;用Win32汇编写第一个窗口 Chapter04\FirstWindow-1 ;用Win32汇编写第一个窗口 Chapter04\SendMessage ;窗口间的消息互发 Chapter04\SendMessage-1 ;窗口间的消息互发 Chapter05\Menu ;使用资源 - 使用菜单 Chapter05\Icon ;使用资源 - 使用图标 Chapter05\Dialog ;使用资源 - 使用对话框 Chapter05\Listbox ;使用资源 - 使用列表框 Chapter05\Control ;使用资源 - 使用子窗口控件 Chapter05\ShowVersionInfo ;使用资源 - 显示版本信息资源的程序 Chapter05\VersionInfo ;使用资源 - 使用版本信息资源 Chapter06\Timer ;定时器的使用 Chapter07\DcCopy ;在两个窗口的 DC 间互相拷贝屏幕 Chapter07\Clock ;模拟时钟程序 Chapter07\BmpClock ;用 Bitmap 图片做背景的模拟时钟程序 Chapter07\TestObject ;一些常见的绘图操作 Chapter08\CommDlg ;使用通用对话框 Chapter09\Toolbar ;使用工具栏 Chapter09\StatusBar ;使用状态栏 Chapter09\Richedit ;使用丰富编辑控件 Chapter09\Wordpad ;一个完整的文本编辑器例子 Chapter09\SubClass ;窗口的子类化例子 Chapter09\SuperClass ;窗口的超类化例子 Chapter10\MemInfo ;显示当前内存的使用情况 Chapter10\Fragment ;内存碎片化的演示程序 Chapter10\FindFile ;全盘查找文件的例子 Chapter10\FormatText ;文件读写例子 Chapter10\FormatText\FileMap ;使用内存映射文件进行文件读写的例子 Chapter10\MMFShare ;使用内存映射文件进行进程间数据共享 Chapter11\Dll\Dll ;最简单的动态链接库例子 - 编写 DLL Chapter11\Dll\MASM Sample ;最简单的动态链接库例子 - 使用 DLL Chapter11\Dll\VC++ Sample ;最简单的动态链接库例子 - 在VC++中使用汇编编写的DLL Chapter11\KeyHook ;Windows 钩子的例子 - 监听键盘动作 Chapter11\RecHook ;Windows 日志记录钩子的例子 - 监听键盘动作 Chapter12\Counter ;有问题程序 - 一个计数程序 Chapter12\Thread ;用多线程的方
××××××××××××××××××××××××××× × 《Windows环境下32位汇编语言程序设计》 × × 附代码说明 × ××××××××××××××××××××××××××× 1. 编译器和链接器 本附代码全部采用 MASM 格式编写,推荐使用 MASM32 软 件包作为编译环境,MASM32 软件包可以在以下地址下载: MASM32官方站点: http://www.masm32.com 安装及开发的操作系统建议采用32位的Windows 7,在64位操作系统 上安装 MASM32 软件包,安装生成的Lib文件可能不兼容。 安装完成以后请将本光盘根目录下的环境设置批处理文件Var.bat 拷贝到 Masm32\bin 目录下,并根据 MASM32 的安装位置编辑修改 Var.bat 文件中的相关目录名称。 2. 代码维护工具 每个例子都包括了描述编译、链接方法的 makefile 文件, 使用 nmake 工具可以自动根据此文件进行编译链接,nmake 工 具可以从 Visual C++ 的 bin 目录中找到,也可以从作者的网 站中下载。 3. 编译环境和编译方法 建议使用命令行方式进行编译,以编译 Chapter02\Test 目录中 Test.asm 为例,步骤是: I. 打开一个“命令提示符”窗口。 II. 进入环境设置批处理文件 Var.bat 所在目录并执行 它,以后就可以使用这个“命令提示符”窗口编译 文件了。 x: cd \masm32\bin var III. 进入源代码目录: cd \chapter02\test IV. 使用 nmake 工具进行编译链接: nmake V. 执行编译好的可执行文件。 如果需要对源代码进行修改,不必关闭“命令提示符”窗口, 只要切换到编辑器窗口,在修改 *.asm 文件后重复进行第 IV 和 第 V 步骤即可。 # 特别注意:将光盘中的代码拷贝到硬盘后,必须将文件的只读属性去除! 4. 本光盘所包含目录的说明 根目录下的 *.pdf ;附录A、B、C的电子版文档 Chapter02\Test ;测试编译环境 Chapter03\HelloWorld ;Hello World Chapter04\FirstWindow ;用Win32汇编写第一个窗口 Chapter04\FirstWindow-1 ;用Win32汇编写第一个窗口 Chapter04\SendMessage ;窗口间的消息互发 Chapter04\SendMessage-1 ;窗口间的消息互发 Chapter05\Menu ;使用资源 - 使用菜单 Chapter05\Icon ;使用资源 - 使用图标 Chapter05\Dialog ;使用资源 - 使用对话框 Chapter05\Listbox ;使用资源 - 使用列表框 Chapter05\Control ;使用资源 - 使用子窗口控件 Chapter05\ShowVersionInfo ;使用资源 - 显示版本信息资源的程序 Chapter05\VersionInfo ;使用资源 - 使用版本信息资源 Chapter06\Timer ;定时器的使用 Chapter07\DcCopy ;在两个窗口的 DC 间互相拷贝屏幕 Chapter07\Clock ;模拟时钟程序 Chapter07\BmpClock ;用 Bitmap 图片做背景的模拟时钟程序 Chapter07\TestObject ;一些常见的绘图操作 Chapter08\CommDlg ;使用通用对话框 Chapter09\Toolbar ;使用工具栏 Chapter09\StatusBar ;使用状态栏 Chapter09\Richedit ;使用丰富编辑控件 Chapter09\Wordpad ;一个完整的文本编辑器例子 Chapter09\SubClass ;窗口的子类化例子 Chapter09\SuperClass ;窗口的超类化例子 Chapter10\MemInfo ;显示当前内存的使用情况 Chapter10\FindFile ;全盘查找文件的例子 Chapter10\FormatText ;文件读写例子 Chapter10\FormatText\FileMap ;使用内存映射文件进行文件读写的例子 Chapter10\MMFShare ;使用内存映射文件进行进程间数据共享 Chapter11\Dll\Dll ;最简单的动态链接库例子 - 编写 DLL Chapter11\Dll\MASM Sample ;最简单的动态链接库例子 - 使用 DLL Chapter11\Dll\VC++ Sample ;最简单的动态链接库例子 - 在VC++中使用汇编编写的DLL Chapter11\KeyHook ;Windows 钩子的例子 - 监听键盘动作 Chapter11\RecHook ;Windows 日志记录钩子的例子 - 监听键盘动作 Chapter12\Counter ;有问题程序 - 一个计数程序 Chapter12\Thread ;用多线程的方式解决上一个程序问题 Chapter12\Event ;使用事件对象 Chapter12\ThreadSynErr ;一个存在同步问题的多线程程序 Chapter12\ThreadSyn\UseCriticalSection ;使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号灯对象解决多线程同步问题 Chapter13\CmdLine ;使用命令行参数 Chapter13\Process ;创建进程的例子 Chapter13\ProcessList ;显示系统中运行的进程列表 Chapter13\Patch1 ;一个内存补丁程序 Chapter13\Patch2 ;一个内存补丁程序 Chapter13\Patch3 ;一个内存补丁程序 Chapter13\HideProcess9x ;Windows 9x下的进程隐藏 Chapter13\RemoteThreadDll ;用 DLL 注入的方法实现远程进程 Chapter13\RemoteThread ;不依靠任何外部文件实现远程进程 Chapter14\TopHandler ;使用筛选器处理异常 Chapter14\SEH01 ;最基本结构化异常处理例子 Chapter14\SEH02 ;改进后的结构化异常处理例子 Chapter14\Unwind ;异常处理中的展开操作例子 Chapter15\Ini ;使用 INI 文件 Chapter15\Reg ;操作注册表的例子 Chapter15\Associate ;操作注册表实现文件关联 Chapter16\TcpEcho ;实现 TCP 服务器端的简单例子 Chapter16\Chat-TCP ;用 TCP 协议实现的聊天室例子 Chapter17\PeInfo ;查看 PE 文件的基本信息 Chapter17\Import ;查看 PE 文件的导入表 Chapter17\Export ;查看 PE 文件的导出表 Chapter17\Resource ;查看 PE 文件的资源列表 Chapter17\Reloc ;查看 PE 文件的重定位信息 Chapter17\NoImport ;不使用导入表调用 API 函数 Chapter17\AddCode ;在 PE 文件上附加可执行代码的例子 Chapter18\OdbcSample ;用ODBC操作数据库的例子 Appendix A\EchoLine ;控制台输入输出的例子 Appendix B\MsgWindow01 ;消息机制试验 1 Appendix B\MsgWindow02 ;消息机制试验 2 Appendix B\MsgWindow03 ;消息机制试验 3 Appendix B\MsgWindow04 ;消息机制试验 4 Appendix C\BrowseFolder ;浏览目录对话框 6. 联系作者 虽然本中所有的例子代码都已经在32位的Windows 98、Windows 2000、 Windows XP、Windows Vista和Windows 7下测试通过,但也有存在Bug的可能,如果 发现代码存在错误或者有其它问题,请告知作者,联系方法: E-mail:luoyunbin@hotmail.com 感谢您的支持! 作者:罗云彬
Windows环境下32位汇编语言程序设计 内容简介: Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。 本从编写应用程序的角度,从“Hello World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过60多个实例逐渐深入Win32汇编语言的方方面面。 本作者罗云彬拥有十余年汇编语言编程经验,是汇编编程网站http://asm.yeah.net和汇编编程论坛http://win32asm.yeah.net的站长。本是作者多年来编程工作的总结,适合于欲通过Win32汇编语言编写Windows程序的读者。 第1章 背景知识 1.1 Win32的软硬件平台(1) 1.1 Win32的软硬件平台(2) 1.2 Windows的特色 1.3 必须了解的东西(1) 1.3 必须了解的东西(2) 1.3 必须了解的东西(3) 1.3 必须了解的东西(4) 1.3 必须了解的东西(5) 第2章 准备编程环境 2.1 Win32可执行文件的开发过程 2.2 编译器和链接器(1) 2.2 编译器和链接器(2) 2.2 编译器和链接器(3) 2.3 创 建 资 源 2.4 make工具的用法(1) 2.4 make工具的用法(2) 2.5 获 取 资 料 2.6 构建编程环境 第3章 使用MASM 当搭建编译和对编译器的使用不再成为绊脚石的时候,初学者的问题往往集中在对Windows程序结构的迷惑上,消息驱动体系、窗口过程、与硬件隔绝的图形接口及资源文件等相对于DOS程序来说都是全新的内容,接下来的4章将深入讨论这些内容,通过这几章,读者应该开始习惯以Windows的方式考虑问题了(脑海中的DOS逐渐远去...),这就是本的初级篇: 3.1 Win32汇编源程序的结构(1) 3.1 Win32汇编源程序的结构(2) 3.1 Win32汇编源程序的结构(3) 3.2 调用API(1) 3.2 调用API(2) 3.2 调用API(3) 3.3 标号、变量和数据结构(1) 3.3 标号、变量和数据结构(2) 3.3 标号、变量和数据结构(3) 3.3 标号、变量和数据结构(4) 3.3 标号、变量和数据结构(5) 3.4 使用子程序 3.5 高 级 语 法(1) 3.5 高 级 语 法(2) 3.6 代 码 风 格(1) 3.6 代 码 风 格(2) 第4章 第一个窗口程序 4.1 开始了解窗口(1) 4.1 开始了解窗口(2) 4.1 开始了解窗口(3) 4.2 分析窗口程序(1) 4.2 分析窗口程序(2) 4.2 分析窗口程序(3) 4.2 分析窗口程序(4) 4.2 分析窗口程序(5) 4.3 窗口间的消息互发 4.4 实 验(1) 4.4 实 验(2) 4.4 实 验(3) 第5章 使用资源 5.1 菜单和加速键(1) 5.1 菜单和加速键(2) 5.1 菜单和加速键(3) 5.1 菜单和加速键(4) 5.1 菜单和加速键(5) 5.1 菜单和加速键(6) 5.1 菜单和加速键(7) 5.2 图标和光标(1) 5.2 图标和光标(2) 5.3 位 图 5.4 对 话 框(1) 5.4 对 话 框(2) 5.4 对 话 框(3) 5.4 对 话 框(4) 5.4 对 话 框(5) 5.4 对 话 框(6) 5.4 对 话 框(7) 5.4 对 话 框(8) 5.4 对 话 框(9) 5.4 对 话 框(10) 5.4 对 话 框(11) 5.5 字符串资源/5.6 版本信息资源(1) 5.6 版本信息资源(2) 5.7 二进制资源和自定义资源 第6章 定时器 6.1 定时器简介/6.2 定时器的使用(1) 6.2 定时器的使用(2) 6.3 取Windows时间 第7章 图形操作 Windows系统不像DOS系统,它的应用程序界面是规范化的,统一的界面来自大量的系统界面控件,学习这些控件就等于学习如何编写Windows界面,下面的界面篇中的两章将探讨这方面的内容: 7.1 GDI原理(1) 7.1 GDI原理(2) 7.1 GDI原理(3) 7.1 GDI原理(4) 7.2 绘 制 图 形(1) 7.2 绘 制 图 形(2) 7.2 绘 制 图 形(3) 7.2 绘 制 图 形(4) 7.2 绘 制 图 形(5) 7.2 绘 制 图 形(6) 7.3 创建和使用位图(1) 7.3 创建和使用位图(2) 7.3 创建和使用位图(3) 7.3 创建和使用位图(4) 7.3 创建和使用位图(5) 7.4 块传送操作(1) 7.4 块传送操作(2) 7.5 区域和路径 第8章 通用对话框 8.1 通用对话框简介 8.1 通用对话框简介(2) 8.1 通用对话框简介(3) 8.2 使用通用对话框(1) 8.2 使用通用对话框(2) 8.2 使用通用对话框(3) 8.3 浏览目录对话框(1) 8.3 浏览目录对话框(2) 8.3 浏览目录对话框(3) 第9章 通用控件 到这里为止,读者学后应该可以写出界面规范的标准的Win32程序了,但还是无法用这些程序来解决一些具体问题,因为有关Windows系统的高级特征的介绍还没有开始,如内存管理、文件操作和多线程等,这些就是本高级篇中将要介绍的内容,通过这些内容,读者将比较深入地了解Windows的工作方式: 9.1 通用控件简介(1) 9.1 通用控件简介(2) 9.2 使用状态栏(1) 9.2 使用状态栏(2) 9.2 使用状态栏(3) 9.2 使用状态栏(4) 9.3 使用工具栏(1) 9.3 使用工具栏(2) 9.3 使用工具栏(3) 9.3 使用工具栏(4) 9.3 使用工具栏(5) 9.3 使用工具栏(6) 9.4 使用Richedit控件(1) 9.4 使用Richedit控件(2) 9.4 使用Richedit控件(3) 9.4 使用Richedit控件(4) 9.4 使用Richedit控件(5) 9.4 使用Richedit控件(6) 9.4 使用Richedit控件(7) 9.4 使用Richedit控件(8) 9.4 使用Richedit控件(9) 9.5 窗口的子类化(1) 9.5 窗口的子类化(2) 9.5 窗口的子类化(3) 9.6 控件的超类化(1) 9.6 控件的超类化(2) 第10章 内存管理和文件操作 10.1 内 存 管 理(1) 10.1 内 存 管 理(2) 10.1 内 存 管 理(3) 10.1 内 存 管 理(4) 10.1 内 存 管 理(5) 10.1 内 存 管 理(6) 10.1 内 存 管 理(7) 10.1 内 存 管 理(8) 10.2 文 件 操 作(1) 10.2 文 件 操 作(2) 10.2 文 件 操 作(3) 10.2 文 件 操 作(4) 10.2 文 件 操 作(5) 10.2 文 件 操 作(6) 10.2 文 件 操 作(7) 10.2 文 件 操 作(8) 10.2 文 件 操 作(9) 10.2 文 件 操 作(10) 10.3 驱动器和目录(1) 10.3 驱动器和目录(2) 10.4 内存映射文件(1) 10.4 内存映射文件(2) 10.4 内存映射文件(3) 10.4 内存映射文件(4) 第11章 动态链接库和钩子 11.1 动态链接库(1) 11.1 动态链接库(2) 11.1 动态链接库(3) 11.1 动态链接库(4) 11.1 动态链接库(5) 11.1 动态链接库(6) 11.2 Windows钩子(1) 11.2 Windows钩子(2) 11.2 Windows钩子(3) 11.2 Windows钩子(4) 11.2 Windows钩子(5) 第12章 多线程 12.1 进程和线程 12.2 多线程编程(1) 12.2 多线程编程(2) 12.2 多线程编程(3) 12.2 多线程编程(4) 12.3 使用事件对象控制线程(1) 12.3 使用事件对象控制线程(2) 12.4 线程间的同步(1) 12.4 线程间的同步(2) 12.4 线程间的同步(3) 12.4 线程间的同步(4) 第13章 进程控制 13.1 环境变量和命令行参数(1) 13.1 环境变量和命令行参数(2) 13.1 环境变量和命令行参数(3) 13.1 环境变量和命令行参数(4) 13.2 执行可执行文件(1) 13.2 执行可执行文件(2) 13.2 执行可执行文件(3) 13.2 执行可执行文件(4) 13.3 进 程 调 试(1) 13.3 进 程 调 试(2) 13.3 进 程 调 试(3) 13.3 进 程 调 试(4) 13.3 进 程 调 试(5) 13.3 进 程 调 试(6) 13.3 进 程 调 试(7) 13.3 进 程 调 试(8) 13.4 进程的隐藏(1) 13.4 进程的隐藏(2) 13.4 进程的隐藏(3) 13.4 进程的隐藏(4) 13.4 进程的隐藏(5) 第14章 异常处理 相信到这里为止,读者对Windows的了解已经是比较系统了,虽然Windows中还存在其他很多方面的内容,如管道,邮件槽,ODBC接口,如何写控制面板程序,屏幕保护程序和驱动程序等,但是有了前面的基础以后,读者自己去了解这些内容就不成问题,因为掌握了“渔”,得到“鱼”又有什么困难呢?在最后的几章中,本将从应用的角度再补充介绍一些常用的网络编程,注册表和PE文件操作方面的内容,这就是应用篇: 14.1 异常处理的用途 14.2 使用筛选器处理异常(1) 14.2 使用筛选器处理异常(2) 14.3 使用SEH处理异常(1) 14.3 使用SEH处理异常(2) 14.3 使用SEH处理异常(3) 14.3 使用SEH处理异常(4) 第15章 注册表和INI文件 15.1 注册表和INI文件简介 15.2 INI文件的操作(1) 15.2 INI文件的操作(2) 15.2 INI文件的操作(3) 15.2 INI文件的操作(4) 15.3 对注册表的操作(1) 15.3 对注册表的操作(2) 15.3 对注册表的操作(3) 15.3 对注册表的操作(4) 15.3 对注册表的操作(5) 15.3 对注册表的操作(6) 15.3 对注册表的操作(7) 15.3 对注册表的操作(8) 第16章 TCP/IP和网络通信 16.1 网络基础知识(1) 16.1 网络基础知识(2) 16.1 网络基础知识(3) 16.2 WinSock接口(1) 16.2 WinSock接口(2) 16.2 WinSock接口(3) 16.2 WinSock接口(4) 16.3 TCP协议编程(1) 16.3 TCP协议编程(2) 16.3 TCP协议编程(3) 16.3 TCP协议编程(4) 16.3 TCP协议编程(5) 16.3 TCP协议编程(6) 16.3 TCP协议编程(7) 16.4 UDP协议编程(1) 16.4 UDP协议编程(2) 16.4 UDP协议编程(3) 16.4 UDP协议编程(4) 16.4 UDP协议编程(5) 16.5 ICMP协议编程(1) 16.5 ICMP协议编程(2) 16.5 ICMP协议编程(3) 16.5 ICMP协议编程(4) 16.5 ICMP协议编程(5) 16.5 ICMP协议编程(6) 16.5 ICMP协议编程(7) 第17章 PE文件 17.1 PE文件的结构(1) 17.1 PE文件的结构(2) 17.1 PE文件的结构(3) 17.1 PE文件的结构(4) 17.1 PE文件的结构(5) 17.1 PE文件的结构(6) 17.1 PE文件的结构(7) 17.1 PE文件的结构(8) 17.2 导 入 表(1) 17.2 导 入 表(2) 17.2 导 入 表(3) 17.3 导 出 表(1) 17.3 导 出 表(2) 17.3 导 出 表(3) 17.4 资 源(1) 17.4 资 源(2) 17.4 资 源(3) 17.4 资 源(4) 17.5 重 定 位 表(1) 17.5 重 定 位 表(2) 17.6 应 用 实 例(1) 17.6 应 用 实 例(2) 17.6 应 用 实 例(3) 17.6 应 用 实 例(4) 17.6 应 用 实 例(5) The CHM file was converted to HTM by Trial version of ChmD ecompiler . Download ChmDec ompiler at: http://www.zipghost.com

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧