读书人

VC高手帮忙看下是什么有关问题吧?高分!

发布时间: 2012-01-30 21:15:58 作者: rapoo

VC高手帮忙看下是什么问题吧?高分!!!!!!!!!!!
在Windows编程中有:
int WINAPI WinMain(HINSTANCEhInstance,HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)

如果我写成:
int PASCAL WinMain(HANDLE hInstance,HANDLE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow)

这里用WINAPI 和用 PASCAL 以及 用HINSTANCE和用HANDLE 有什么不同呢??
多谢啊



[解决办法]
PASCAL 宏是指 __stdcall 调用约定,即参数从右向左压栈,被调者负责退栈,编译后的函数名称修饰为前面加下划线,后面加 @符号及参数的字节数
WINAPI 宏在WIN32中就是指 __stdcall


[解决办法]
#ifdef _MAC
#define CALLBACK PASCAL
#define WINAPI CDECL
#define WINAPIV CDECL
#define APIENTRY WINAPI
#define APIPRIVATE CDECL
#ifdef _68K_
#define PASCAL __pascal
#else
#define PASCAL
#endif
#elif (_MSC_VER > = 800) || defined(_STDCALL_SUPPORTED)
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#else
#define CALLBACK
#define WINAPI
#define WINAPIV
#define APIENTRY WINAPI
#define APIPRIVATE
#define PASCAL pascal
#endif


DECLARE_HANDLE(HINSTANCE);
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;

[解决办法]
接着:
HANDLE是句柄类型的总称
HINSTANCE是实例句柄(HANDLE的一种),就像HWND是窗口句柄 HFONT是字体句柄
[解决办法]
从实用角度来讲,这两者好像没什么大的区别,这两种写法都可以的吧。。。。。
[解决办法]
HANDLE是句柄类型的总称
HINSTANCE是实例句柄(HANDLE的一种),
实际使用区别不大

读书人网 >VC/MFC

热点推荐