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;
    }
    
  • 相关阅读:
    如何使用ERStudio 生成comment
    windows 使用excel导出的问题
    iOS Runtime(一)、objc_class深深的误解
    iOS开发安全
    iOS微信运动 刷分
    APP中的 H5和原生页面如何分辨、何时使用
    Weex系列二、显示图片
    Android系列一、创建项目
    Weex系列一、构建Weex工程
    时间复杂度
  • 原文地址:https://www.cnblogs.com/develon/p/9123837.html
Copyright © 2011-2022 走看看