这两天学习动态库的练习,分享下方法 实例.封装窗口类的两种状态. 1.自定义窗口类QWnd 2.资源模板窗口对话框类 下面是dll的头文件,类的声明 #pragma once #ifndef _CLASSDLL_H_ #define _CLASSDLL_H_ #include <windows.h> #include <assert.h> //定义导入与导出类的宏标识 //
新建MFC Dll项目,设置项目名称和保存位置. 默认即可 解决方案右键项目属性 修改目标扩展名为.arx,注意当前平台为win32 添加包含目录,当前win32添加 inc和inc-win32目录 添加库目录,lib-win32 选择链接器,常规,选择输出路径,右键复制 修改调试,命令为cad的exe路径,命令参数
前情提要 前篇:https://www.cnblogs.com/judgeou/p/14724951.html 上一集我们攻略了硬件解码 + Direct3D 9 渲染,这一整篇我们要搞定 Direct3D 11 的渲染,比9复杂的不是一点半点,因为将会涉及比较完整的图形管线编程,并且需要编写简单的着色器代码。关于图形学的内容我不会太深入(我也不
Wind32 GDI在内存中绘制彩色位图 1创建兼容的内存DC hPicture为创建的静态文本框控件句柄 LRESULT OnPaint(HWND hWnd) { PAINTSTRUCT ps; HDC hdc = ::BeginPaint(hWnd, &ps); //1.创建静态文本框控件DC HDC hPictureDc = GetDC(hPicture); /
学 Win32 汇编[31] - 结构与联合 结构和联合分别用 struct、union 定义, 都是 ends 结束定义. 它们使用方法相同, 并可以互相嵌套; 主要区别是后者的各成员共用同一个地址.结构示例:; Test31_1.asm .386 .model flat, stdcall include windows.inc include kernel32
学 Win32 汇编[27] - 乘除指令: MUL、IMUL、DIV、IDIV MUL: 无符号乘 ;影响 OF、CF 标志位 ;指令格式: ;MUL r/m ;参数是乘数 ;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX ;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX ;如果参数是 r32/m32, 将把 EAX 做
学 Win32 汇编[25] - 符号扩展指令: CBW、CWDE、CDQ、CWD CBW、CWDE、CDQ、CWD: 扩展指令 ;CBW(Convert Byte to Word): 将 AL 扩展为 AX ;CWDE(Convert Word to Extended Double): 将 AX 扩展为 EAX ;CDQ(Convert Doubleword to Quadword): 将 EAX 扩展为 6
学 Win32 汇编[20]: 洞察标志寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF 未使用 嵌套标志 I/O权限标志占2位 溢出标志 方向标志 中断允许标志 单步标志 符号标志 零标志 未使用 辅助标志 未使用 奇偶标志 未使用 进位标
学 Win32 汇编[19]: 查看二进制等相关函数 在 masm32.inc 中有这样几个函数的声明:byt2bin_ex PROTO :BYTE, :DWORD wrd2bin_ex PROTO :WORD, :DWORD dw2bin_ex PROTO :DWORD, :DWORD dw2hex_ex PROTO :DWORD, :DWORD bin2byte_ex PROTO :DWORD byt2bin_ex: 从 Byte
学 Win32 汇编[16]: 常用寄存器的常规功能 通用寄存器 EAX 累加(Accumulator)寄存器 AX(AH、AL) 常用于乘、除法和函数返回值 EBX 基址(Base)寄存器 BX(BH、BL) 常做内存数据的指针, 或者说常以它为基址来访问内存. ECX 计数器(Counter)寄存器 CX(CH、CL) 常做字符串和循环
学 Win32 汇编[15]: LOOP 与标号 Loop 是反复执行; 从哪反复? 这要用到 "标号"; 反复几次? 把反复的次数告诉 ECX 寄存器即可.笨办法计算 3 * 8 = 24; Test15_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc inc
学 Win32 汇编[14]: 使用中括号 [] [地址] 是取地址指向的内容:; Test14_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug
学 Win32 汇编[13]: 定义符号常量(=、EQU、TEXTEQU) =、EQU、TEXTEQU 功能差不多, 它们定义的符号都将在编译前辈替换成它们指定的常量值. 相比之下 EQU 更好用些.= 举例; Test13_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc includ
学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS PTR: 指定要操作的数据尺寸; Test12_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib include
学 Win32 汇编[10]: TYPE、$、LENGTHOF、SIZEOF、TYPEDEF TYPE: 获取类型大小, 对数组是获取每个元素的大小; Test10_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.l
学 Win32 汇编[9]: 子过程中的变量声明 定义子过程的伪指令: PROC、ENDP; Test9_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includeli
学 Win32 汇编[8]: 算术运算符、关系操作符、逻辑操作符、高低分离符和移位运算符 算术运算符 名称 优先级 () 圆括号 1 +,- 正、负 2 *,/ 乘、除 3 MOD 取模 3 +,- 加、减 4 算术运算符示例:; Test8_1.asm .386 .model flat, stdcall include windows.inc include k
学 Win32 汇编[7]: 定义字符串 例一; Test7_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data v1 db 'ABCD
学 Win32 汇编[6]: 伪指令 DUP 与数组 声明数组实例:; Test6_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data
学 Win32 汇编[5]: 数据类型与声明 类型描述 类型 缩写 位数 字节数 浮点数有效位 数值范围 字节 BYTE DB 8 1 0..255 有符号字节 SBYTE DB 8 1 -128..127 字 WORD DW 16 2 0..65535 有符号字 SWORD DW 16 2 -32768..32767 双字 DWORD DD 32 4 0..4294967295
学 Win32 汇编[4]: 使用 Debug 输出测试结果 由于 Debug 输出是使用的标准的 Win32 窗口, 所以 include 和 includelib 的文件较多. 这样建立工程时就不需要是控制台程序了, 工程建立方法: 文件 -> 新建工程 -> 工程类型: Win32 App (no res) ...PrintString: 输出字符串
学 Win32 汇编[3]: 控制台下的几种输出方式 在熟悉指令、伪指令和汇编语法的过程中, 首先需要的是输出显示的手段. 我刚开始学习时使用的是控制台输出, 最后发现既然是 Win32 汇编还是用 Debug 输出更好. 下面是之前尝试出的控制台输出的几种办法: 1、使用 MASM 提供的 St
学 Win32 汇编[2]: 最简单的 Win32 程序 ; Test2_1.asm .386 .model flat, stdcall include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib .data szCaption db 'Hi', 0 szMsg db 'Hello Wor
学 Win32 汇编[1]: 选择编辑与编译工具 Win32 汇编工具主要有 MASM 和 TASM; 我选择前者, 理由是使用范围广, 便于交流. 根据介绍, 我先下载了 MASM32(http://www.masm32.com/), 发现不错, 但不是我最想要的. 后来找到了 RadASM(官方地址: http://www.oby.ro/rad_asm/ind
微软的MDT提供一个ZtiGather.wsf的tool来识别客户端的系统类别。对应不同的系统类型,会生成对应的OSD系统变量,如服务器(IsServer),台式机(IsDesktop),笔记本(IsLaptop)。这个变量对于我们部署app来说是很方便的,可以在一个task sequence里安装各个硬件类型的app,而不用为每个硬件类型都创