01. windows程序和console程序区别
一. windows程序和控制台程序的区别:
1. 入口点不同:
Window程序:
int __stdcall wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow);
控制台程序:
int main();
2. 连接选项不同:
windows程序链接选项:/SUBSYSTEM:WINDOWS
控制台程序链接选项:/SUBSYSTEM:CONSOLE
二. windows程序入口点的解释
int __stdcall wWinMain(HINSTANCE hInstance,//实例句柄,0x00400000,内存中程序首地址 HINSTANCE hPrevInstance,//向后兼容,基本不用 LPWSTR lpCmdLine,//命令行 int nCmdShow);//程序最初如何显示
三. windows函数
大部分函数都有A版和W版,例如MessageBox。
#ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif // !UNICODE
TEXT(quote)也是通过定义UNICODE实现的。
tchar.h中的__T(x)用的是 _UNICODE,多一个下划线。
文件 |
开关 |
宏 |
tchar.h |
_UNICODE |
_T |
winnt.h |
UNICODE |
TEXT |
一. windows程序和控制台程序的区别:
1. 入口点不同:
Window程序:
int __stdcall wWinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow);
控制台程序:
int main();
2. 连接选项不同:
windows程序链接选项:/SUBSYSTEM:WINDOWS
控制台程序链接选项:/SUBSYSTEM:CONSOLE
二. windows程序入口点的解释
int __stdcall wWinMain(HINSTANCE hInstance,//实例句柄,0x00400000,内存中程序首地址
HINSTANCE hPrevInstance,//向后兼容,基本不用
LPWSTR lpCmdLine,//命令行
int nCmdShow);//程序最初如何显示
三. windows函数
大部分函数都有A版和W版,例如MessageBox。
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif // !UNICODE
TEXT(quote)也是通过定义UNICODE实现的。
tchar.h中的__T(x)用的是 _UNICODE,多一个下划线。
文件 |
开关 |
宏 |
tchar.h |
_UNICODE |
_T |
winnt.h |
UNICODE |
TEXT |