win32-求教WIN32汇编如何向后引用变量?

问题描述

求教WIN32汇编如何向后引用变量?

假如我定义一个宏:
DEFVAR macro TYPE,VARNAME,VALUE
.data
ifnb
VARNAME TYPE VALUE
else
VARNAME TYPE NULL
endif
.code
endm

然后在一个对话框消息回调函数里定义:
.code
_DlgProc proc hWnd,uMsg,wParam,lParam
mov eax,uMsg

.if eax == WM_CLOSE
    invoke  EndDialog,hWnd,0
    invoke  DeleteObject,hBmp1
    invoke  DeleteObject,hBmp2
.elseif eax == WM_INITDIALOG
    invoke  LoadBitmap,hInstance,IDB_1
    DEFVAR  HBITMAP,hBmp1
    mov hBmp1,eax
    invoke  LoadBitmap,hInstance,IDB_2
    DEFVAR  HBITMAP,hBmp2
    mov hBmp2,eax
.else
    mov eax,FALSE
    ret
.endif
mov eax,TRUE
ret

_DlgProc endp
end

这时问题来了,WM_CLOSE响应里的DeleteObject,hBmp1,DeleteObject,hBmp2这样写hBmp1,hBmp2编译器认为是未定义的,请教各位大大如何声明hBmp1,hBmp2这两个全局变量,使之可以引用到

解决方案

把变量声明到.data段里就是全局变量。

时间: 2024-08-01 12:11:56

win32-求教WIN32汇编如何向后引用变量?的相关文章

线程-关于Win32核心编程中DLL注入后无反应的解决办法

问题描述 关于Win32核心编程中DLL注入后无反应的解决办法 #include #include HINSTANCE hProcess; PWSTR pszLibFileRemote; HINSTANCE hThread; void StartInject(int ProcessID, char * DllName); void OverInject(char * DllName); void EnableDebugPrivilege(HANDLE processHandle); int ma

汇编语言-求教以下汇编代码里面的^表示什么意思。

问题描述 求教以下汇编代码里面的^表示什么意思. 想请教下大神,代码最后一行的^符号表示什么意思? irq: sub lr, lr, #4 stmfd sp!, {r0-r12, lr} bl handle_int ldmfd sp!, {r0-r12, pc}^ 解决方案 arm汇编 参考:http://wenku.baidu.com/link?url=d11DHDolvKbXs_jtOfWgsvMHvPTNOb4-2fPHcS-5_KHniRakqsJKkyzjBVvctNKu9h5L0LH

mysql-新手求教 java中使用MYsql后查询结果怎么输出到别的地方

问题描述 新手求教 java中使用MYsql后查询结果怎么输出到别的地方 按钮点击事件做完了能连接到数据库可惜输入条件后点击查询只在Eclipse中显示数据库连接成功 而查询并没有显示查询结果 求解 解决方案 在后台找执行的sql,在 数据库中查询,看有没有数据 解决方案二: 参考 http://zhidao.baidu.com/question/559756306057754404.html 解决方案三: 数据库查询结果,可以直接用System.out.print打印到控制台界面: 也可以创建

求教telnet连上远程主机后,从远程主机copy文件到本地为何报错“拒绝访问”???

问题描述 求教telnet连上远程主机后,从远程主机copy文件到本地为何报错"拒绝访问"??? 我客户端和服务端都是administrator用户登陆.telnet链接上远程主机后,在远程主机上盘符之间copy都正常,但把远程主机上的文件copy到本地时就报错:"拒绝访问".我感觉是不是我本地的administrator用户的一些什么权限设置之类的问题?或者有哪些本地服务需要启动?该如何解决?求大神指教. 解决方案 看下是不是权限的问题,或者没有连上 解决方案二:

c++-C++引用变量问题,函数中临时变量返回引用

问题描述 C++引用变量问题,函数中临时变量返回引用 C++ primer plus第六版引用一节,说不能在函数中新建一个变量,并将其引用返回.道理我都懂,就是说函数调用完后,那部分临时内存会释放.可是为什么我自己写的下述代码不报错,反而能正常运行呢? #include using namespace std; struct free_throws //此处定义一个结构体 { int i; }; const free_throws & clone2(free_throws & ft1, f

Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别

1.数组和普通对象的引用变量有什么区别 了解什么是数组看这里:java中的数组是什么  对于Java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用传递给另一数组引用,但仍然不能改变数组长度(仅仅只是调整数组引用指针的指向).  了解数组传递看这里:数组如何传递 public class TestArrayLength { public static void main(String[] args) { int[] numbers = { 3, 5, 1

关于C/C++ const变量 const指针 以及C++ 引用变量的解析

 关于C/C++ const变量 const指针 以及C++ 引用变量的解析    首先我们知道const表示一个不能更改的值,在程序中往往使用这种属性来保证安全,但是这种操作在C和C++中却不同  我测试中C++不能用MEMCPY进行更改但是C却可以  其中我们常见的  const int a = 10;一个常量,不能更改其a的值  const int *p1;一个指针但是他的返回值是const int类型  如我们可以  p = &a;  int* const p;一个指针,这个指针在整个生

请问“引用变量保持用于引用对象的位”这句话是什么意思?

问题描述 请问"引用变量保持用于引用对象的位"这句话是什么意思? 请问"引用变量保持用于引用对象的位"这句话是什么意思??????????????????????????? 解决方案 "位"?翻译错误吧,应该是"地址"或"指针"比较正确. 解决方案二: 引用变量就是对被引用变量的一个副本,它可以访问变量.

换系统后环境变量缺失

问题描述 换系统后环境变量缺失 电脑原装系统中环境变量有很多项,换了系统后少了很多,一般是什么原因呢? 解决方案 这说明一些环境变量是第三方软件或者电脑生产商设置的,而不是操作系统预设的. 解决方案二: 一些软件会修改环境变量,重装之后就还原为系统默认的了