首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-01-30 
VC高手帮忙看下是什么问题吧?高分!!!!!!!!!!!在Windows编程中有:intWINAPIWinMain(HINSTANCEhInstance,HIN

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的一种),
实际使用区别不大

热点排行