zhangxinkuku 2014-05-20 13:28 采纳率: 0%
浏览 1735

求教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这两个全局变量,使之可以引用到

  • 写回答

1条回答

  • 纵横车 2015-05-19 12:28
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?