在汇编中帮助win32 api

Dr *_*Deo 4 c assembly masm

为什么程序集中的结构声明与win32 api文档中的结构声明不同.(我来自c ++并尝试使用汇编语言)

例如我从icezelion的教程中获得了这个函数原型(tutorial3)

WNDCLASSEX STRUCT DWORD
  cbSize            DWORD      ?
  style             DWORD      ?
  lpfnWndProc       DWORD      ?
  cbClsExtra        DWORD      ?
  cbWndExtra        DWORD      ?
  hInstance         DWORD      ?
  hIcon             DWORD      ?
  hCursor           DWORD      ?
  hbrBackground     DWORD      ?
  lpszMenuName      DWORD      ?
  lpszClassName     DWORD      ?
  hIconSm           DWORD      ?
WNDCLASSEX ENDS   
Run Code Online (Sandbox Code Playgroud)

嘿等等......我知道"WNDCLASSEX"结构,在我的win32 api文档的离线版本中,它声明为....

typedef struct _WNDCLASSEX {    // wc  
    UINT    cbSize; 
    UINT    style; 
    WNDPROC lpfnWndProc; 
    int     cbClsExtra; 
    int     cbWndExtra; 
    HANDLE  hInstance; 
    HICON   hIcon; 
    HCURSOR hCursor; 
    HBRUSH  hbrBackground; 
    LPCTSTR lpszMenuName; 
    LPCTSTR lpszClassName; 
    HICON   hIconSm; 
} WNDCLASSEX; 
Run Code Online (Sandbox Code Playgroud)

为什么asm版本使用DWORD只与win32 api文档中的内容相反?
我使用的是错误的文档还是什么?如果我可以有人给我发布WIN32 api文档的下载链接意味着asm程序员?
帮忙,很困惑.

编辑:这是我参考的教程的链接:

iczelion的win32 asm教程3

小智 7

DWORDS在32位窗口上是32位类型,与C版本的结构中的所有类型一样.因此两者是兼容的.


3Da*_*ave 5

汇编语言是无类型的 - DWORD和其他关键字仅表示应为特定实体保留的字节数.实际上,由于DWORD及其表兄弟不代表操作码/助记符,因此它们实际上是宏预处理器的功能.

与其他语言类似的C/C++类型受到诸如endian-ness之类的规则的约束,其中符号位,转换,转换和赋值是可能的等等.您提供的C版本的结构比汇编语言版本,但兼容.