zoukankan      html  css  js  c++  java
  • AllocConsole()

    AllocConsole() 为 Windows 程序创建一个控制台窗口, 失败返回零, 可调用 GetLastError().

    分配控制台后可能需要重定向标准输出和标准输入(Windows 平台标准错误和标准输出相同),

    这时就需要两个特殊的文件名了:

      CONOUT$     --Console output

      CONIN$      --Console input

    使用 OpenFile() 或者 VC++ 提供的 C I/O 函数来操练它们吧!

    如果使用 Unicode 字符集, 可能需要设置控制台的代码页或者设置 VC++ 运行时的 Unicode 字符的映射目标字符编码:

      system("chcp 65001"); // 设置控制台使用 UTF-8 编码映射代码页

      const char *infoSetCodePage = setlocale(LC_CTYPE, ""); // 自动设置目标字符集为系统默认代码页

    总之控制台对于国际化十分不友好, 不要太依靠它!

    代码

    //#pragma comment(lib, "d3d9.lib") 
    
    #include <Windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <locale.h>
    
    int CALLBACK _tWinMain(
    	_In_ HINSTANCE hInstance,
    	_In_opt_ HINSTANCE hPrevInstance,
    	_In_ LPTSTR     lpCmdLine,
    	_In_ int       nCmdShow
    ) {
    	// 分配控制台,并使用特殊文件名"CONOUT$"重新打开输入流stdout: FILE *
    	AllocConsole();
    	FILE* file = NULL;
    	freopen_s(&file, "CONOUT$", "w+", stdout);
    
    	//system("chcp 65001");
    	const char* infoSetCodePage = setlocale(LC_CTYPE, "");
    	_tprintf(TEXT("设置结果:%S.
    "), infoSetCodePage);
    	_tprintf(TEXT("%s, World!
    "), TEXT("你好"));
    
    	Sleep(4000);
    	FreeConsole(); // Free the console
    	return 0;
    }
    
  • 相关阅读:
    spring in action小结4.1
    spring in action小结3 运行时值注入
    python-__init__.py 与模块对象的关系
    Python-常用库扩展
    Qt-优化布局结构
    Python-文件修改器
    C语言-数据结构(一)
    Python-PyQt4学习笔记
    Python-PyQt4学习资料汇总
    Linux-查看C语言手册及man的特殊用法
  • 原文地址:https://www.cnblogs.com/develon/p/9123837.html
Copyright © 2011-2022 走看看