您的位置:首页 > 其它

Win32应用程序中创建控制台窗口

2013-03-04 01:30 344 查看
在Win32应用程序上默认是没有控制台窗口的,但经常需要用来调试。如何打开呢?

1.设置两个全局的句柄,标准输入和输出。

HANDLE hStdin;

HANDLE hStdout;



2.建立控制台,并获得句柄(顺序很重要,AllocConsole放在后面会使得hStdin和hStdout获取不到句柄)

AllocConsole();

hStdin = GetStdHandle(STD_INPUT_HANDLE);

hStdout =GetStdHandle(STD_OUTPUT_HANDLE);



3.输出

char* buffer ="lzh123";

DWORD length =strlen(buffer);

WriteFile(hStdout,buffer,length,&length,0);



4.输入(输入读到buffer中)

char buffer[5];

DWORD length = 5;

ReadFile(hStdin,buffer,length,&length,0);



注意:如果输入

dd(按回车)

则数组buffer为:

buffer[0] = ‘d’;

buffer[1] = ‘d’;

buffer[2] = ‘\r’;

buffer[3] = ‘\n’;

buffer[4] = ????;



所以通常在输入前将buffer[4] = ‘\0’;



5.释放控制台

FreeConsole();







最好的方法:

AllocConsole();

freopen("conin$","r+t",stdin);

freopen("conout$","w+t",stdout);



//这样printf,scanf,cin,cout都可以用

int lzh;

cout<<"111"<<endl;

cin>>lzh;

cout<<"thisis "<<lzh<<endl;



fclose(stdin);

fclose(stdout);

转帖:http://blog.csdn.net/lzhlzz/article/details/6593614
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: