在VC,Win32App下实现命令行

先锋7号
新版穿新鞋,走老路。

#include <windows.h>
#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <conio.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
// 在你的程序中加入下面代码,几个实现32位的程序,使用命令行方式界面。
int hCrt,iResult;
FILE *hf;
AllocConsole();
hCrt=_open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE),_O_TEXT );
hf = _fdopen( hCrt, "w" );
*stdout = *hf;
iResult = setvbuf( stdout, NULL, _IONBF, 0 );
printf( "hello world" );
getch();
return 0;
}

※编辑: modico 于 2000-12-13 15:50:59 在 [202.117.82.2] 编辑本文

当我离开西北工业大学后,才发现这里原来也是一所好大学
先锋7号
// 在Win32平台上写控制台程序的目的在于初学Win32编程的同学可以
// 先忽略界面部分而直接进行核心部分的练习。
// 也用于一些算法的初期验证。
// 注意:这个程序可是能使用2G虚拟内存的。
// 作者:yangli

#include <windows.h>
#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <conio.h>
int APIENTRY WinMain(HINSTANCE hInstance , HINSTANCE R1 , LPSTR R2 , int R3)
{
/* ---以下代码将启动一个控制台,并将stdout帮定在上面。--- */
{
int hCrt,iResult;
FILE *hf;
AllocConsole();
hCrt=_open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE),_O_TEXT );
hf = _fdopen( hCrt, "w" );
*stdout = *hf;
iResult = setvbuf( stdout, NULL, _IONBF, 0 ); //取消文件缓冲
}
/* ---以上代码将启动一个控制台,并将stdout帮定在上面。--- */
// 定制自己喜欢的控制台
CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo( hStdOut , &ConsoleInfo );
printf("欢迎使用Win32控制台程序,控制台缓冲是<%d,%d>\n",ConsoleInfo.dwSize.X , ConsoleInfo.dwSize.Y);
SetConsoleTitle("一个简单的控制台程序");
// 这里是结构化异常处理的例子
int iTemp = 0,iCounter = 0;
while ( iTemp < 10 )
{
__try
{
if ( iTemp == 2 )
{
iCounter++;
printf("%02d :continue, iTemp=%d\n" , iCounter , iTemp );
continue;
}
if ( iTemp == 3 )
{
iCounter++;
SetConsoleTextAttribute(hStdOut , 0x000d);
printf("%02d :break, iTemp=%d\n" , iCounter , iTemp );
SetConsoleTextAttribute(hStdOut , 0x0007);
break;
}
}
__finally
{
iCounter++;
printf("%02d :finally, iTemp=%d\n" , iCounter , iTemp );
iTemp ++ ;
}
iTemp ++;
}
getch();
return ( 0 );
}

※编辑: modico 于 2000-12-13 15:52:12 在 [202.117.82.2] 编辑本文

当我离开西北工业大学后,才发现这里原来也是一所好大学
先锋7号
1)写好这个程序。<建议使用Ctrl-C Ctrl-V>
2) 用VC打开之。
3)按F5编译,VC会自动生成一个编译环境。(但是他不能通过连接)
4)按Alt-F7,选择Link。
5)删除Project Options:中的‘/subsystem:console’这一段落。
6)按F5编译。
7)应该成功了。

当我离开西北工业大学后,才发现这里原来也是一所好大学