MFC应用程序使用控制台的方法
2009-05-10 14:50
316 查看
CreateFile函数除了可以新建和打开文件外,还可以建立Win32环境下的控制台缓冲。此时CreateFile函数的返回值是控制台缓冲的句柄。
至此得到了一个可用的输出控制台,可以用类似的方法得到一个输入控制台:
如果已经在程序的其他地方打开过控制台,可以用GetStdHandle()函数快速获得控制台句柄。GetStdHandle函数的唯一参数是一个DWORD标志,可能的取值有
STD_OUTPUT_HANDLE//获取输出控制台句柄
STD_INPUT_HANDLE//获取输入控制台句柄
STD_ERROR_HANDLE//获取错误输出控制台句柄
至此,就可以使用类似于读写磁盘文件的方法是用输入/输出控制台了。可以使用Write/ReadFile函数,更好的做法是使用Write/ReadConsole函数。微软给定解释是“Write/ReadFile”函数不支持Unicode。
MFC里还是不能使用cout和printf函数的,也就是说输出数据的格式化不那么方便。解决办法只能是使用CString的Format函数然后再GetBuffer。同样,输入的时候只能从输入缓冲里接收字符串,需要自己分离里面的数据。
HANDLE console_write=CreateFile("CONOUT$",//系统控制台缓冲文件 GENERIC_READ|GENERIC_WRITE,//要读/写控制台缓冲文件,必须以读/写方式打开 FILE_SHARE_READ|FILE_SHARE_WRITE,//如果多个线程要共享这个输出控制台,就要设置共享标志 NULL,//文件安全属性,这里为NULL OPEN_EXISTING,//无论是输出控制台还是输入控制台,都要使用OPEN_EXISTING标志 NULL,//被忽略的参数 NULL);//被忽略的参数
至此得到了一个可用的输出控制台,可以用类似的方法得到一个输入控制台:
HANDLE console_read=CreateFile("CONIN$",//注意输入控制台的缓冲文件变成了"CONIN$" GENERIC_READ|GENERIC_WRITE,//以下同输出控制台 FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
如果已经在程序的其他地方打开过控制台,可以用GetStdHandle()函数快速获得控制台句柄。GetStdHandle函数的唯一参数是一个DWORD标志,可能的取值有
STD_OUTPUT_HANDLE//获取输出控制台句柄
STD_INPUT_HANDLE//获取输入控制台句柄
STD_ERROR_HANDLE//获取错误输出控制台句柄
至此,就可以使用类似于读写磁盘文件的方法是用输入/输出控制台了。可以使用Write/ReadFile函数,更好的做法是使用Write/ReadConsole函数。微软给定解释是“Write/ReadFile”函数不支持Unicode。
char * buffer={"Hello Console World!/n"}; WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),//获得输出控制台句柄 buffer,//要输出内容的缓存 strlen(buffer),//缓存长度 NULL,NULL );
MFC里还是不能使用cout和printf函数的,也就是说输出数据的格式化不那么方便。解决办法只能是使用CString的Format函数然后再GetBuffer。同样,输入的时候只能从输入缓冲里接收字符串,需要自己分离里面的数据。
相关文章推荐
- MFC应用程序使用控制台的方法
- 2步让Win32应用程序/控制台应用使用MFC类库支持显示对话框
- win32控制台应用程序中使用CString类型的方法
- 控制台程序使用MFC类的方法
- 控制台程序使用mfc库的方法
- win32控制台程序中,使用MFC的方法
- 使用VS2010开发的MFC Ribbon应用程序运行后关闭了属性界面、输出界面、类视图、通知栏等再次恢复方法
- win32控制台程序中,使用MFC的方法
- .NET Core控制台应用程序如何使用异步(Async)Main方法详解
- 控制台程序使用MFC类的方法
- 控制台程序使用MFC类的方法
- MFC应用程序中指针的使用(比较实用)
- 在应用程序中调用控制台的方法
- 使用WebLogic时控制台输出中文乱码解决方法
- 使用API屏蔽掉控制台应用程序的关闭按钮[转]
- MFC中使用控制台输出调试信息
- 多线程在C、Win32和MFC下的使用方法
- MFC中定时器的使用方法
- MFC checkbox使用方法
- MFC List Control 报表使用方法