本文共 1335 字,大约阅读时间需要 4 分钟。
#includeint APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, TEXT("1"), TEXT("2333333333333333"), 0); return 0;}
其中:
APIENTRY
#define APIENTRY WINAPI#define WINAPI __stdcall
WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除??如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编译器产生栈的方式不尽相同,那么调用者能否正常的完成清除工作呢?答案是不能。如果使用__stdcall,上面的问题就解决了,函数自己解决清除工作。所以,在跨(开发)平台的调用中,我们都使用__stdcall(虽然有时是以WINAPI的样子出现)。那么为什么还需要_cdecl呢?当我们遇到这样的函数如 fprintf()它的参数是可变的,不定长的,被调用者事先无法知道参数的长度,事后的清除工作也无法正常的进行,因此,这种情况我们只能使用 _cdecl。到这里我们有一个结论,如果你的程序中没有涉及可变参数,最好使用__stdcall关键字。
HINSTANCE
typedef void * HANDLE;typedef void *HMODULE;typedef void *HINSTANCE;
LPTSTR
typedef LPWSTR PTSTR, LPTSTR;typedef _Null_terminated_ WCHAR *NWPSTR, *LPWSTR, *PWSTR;typedef wchar_t WCHAR; // wc, 16-bit UNICODE character#ifndef _WCHAR_T_DEFINEDtypedef unsigned short wchar_t;#define _WCHAR_T_DEFINED#endif /* _WCHAR_T_DEFINED */
数据类型 C语言中,short是定义一种整型变量家族的一种。例如short i;表示定义一个短整型的变量i。 长度 依据程序编译器的不同short定义的字节数不同。 标准定义short短整型变量不得低于16位,即两个字节。 编译器头文件夹里面的limits.h定义了short能表示的大小:SHRT_MIN~SHRT_MAX。 在32位平台下如windows(32位)中short一般为16位。基本用法 1.C++ C short为一种数据类型,范围-32768~+32767。 2. 共有两种: unsigned short i; i可以表示0~65535 signed(默认)short i; i可以表示-32768~+32767 ”
转载地址:http://exql.baihongyu.com/