一般来讲GUI程序不能使用STDIN和STDOUT,但是有时有些特殊需要,希望GUI程序也有控制台,如:一个程序,既可以以GUI方式运行,又可以如果用户在控制台里打程序名的话,就以控制台程序的方式运行。
通过AllocConsole() 和 AttachConsole() 这两个WIN API就能实现上面的需求。这两个API分别是在GUI(MFC)程序中分配一个控制台和将程序附着到一个控制台上。
用法举例:
AttachConsole(ATTACH_PARENT_PROCESS); // 将当前程序附着到父进程上,因为是从控制台启动的,所以当前程序的父进程就是那个控制台。
_tmain与main,winMain,wmain
1. main():WINDOWS的控制台程序(32BIT)或DOS程序(16BIT)入口函数
WinMain():是WINDOWS的GUI程序入口函数
2. _tmain和_tWinMain的定义在<tchar.h>
#ifdef _UNICODE
#define _tmain wmain
#define _tWinMain wWinMain
#else /* ndef _UNICODE */
#define _tmain main
#define _tWinMain WinMain
#endif
如果是UNICODE则主函数是wmain或wWinMain,否则是main或WinMain
UNREFERENCED_PARAMETER的作用
这个宏在 winnt.h 中定义如下:
#define UNREFERENCED_PARAMETER(P) (P)
换句话说 UNREFERENCED_PARAMETER 展开传递的参数或表达式。
我们在程序开头申明
int i;
之后就再也没使用过i,在最高级别的警告 Level 4(/W4)进行编译,胡会出现
“warning C4100: ''i'' : unreferenced formal parameter.”
UNREFERENCED_PARAMETER是对参数P的“假使用”,以达到避免编译器关于未引用参数的警告。