1、打开VS2017,然后新建一个名为“ConsoleDemo5”的“Windows控制台应用程序”项目;
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/38332303bbea3e867dc215f65cd4483105eb5523.jpg)
2、在打开的“ConsoleDemo5.cpp”文件中,包含Windows.h头文件,然后在main函数中使用system函数暂停程序执行。代码添加完毕后,调试执行程序。在弹出的控制台窗口中,你会发现其标题实际上是控制台程序的绝对路径;
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/31097f43d7d4483155618212d40f822b75ee5123.jpg)
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/05aae8a75f0f822b21646887c018512c8df14d23.jpg)
3、关闭控制台窗口返回到main函数中,在main函数之上包含“strsafe.h”头文件,然后在mai荏鱿胫协n函数中添加通过GetConsoleTitle函数获取控制台标题的测试代码。由于控制台标题字符串的长度一定不会超过“MAX_PATH”常量定义的路径长度。因此,这里定义一个MAX_PATH长度的局部变量,用于保存获取的控制台标题。代码添加完毕后,调试运行程序。在弹出的控制台窗口中,可以见到打印的控制台标题;
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/75af02324b18512cd57bac12ad334884cce34923.jpg)
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/d9e638334884cde315a6225bf07f860e7d754223.jpg)
4、关闭控制台程序返回到main函数中,继续添加“设置控制台标题”的测试代码。在这份代码中,通过StringCchPrintf函数格式化字符串并保存到变量title中,然后通过API函数SetConsoleTitle将其设置为窗口标题。代码编写完毕后,调试运行程序。在弹出的控制台窗口中,你会发现窗口标题已经变成了代码中设置的值;
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/7a3e980e7c75e5f4987f9ab8b1ceaad7736bbc23.jpg)
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/ef4c24ceaad7726b65681152bf0f64781523b923.jpg)
5、关闭控制台窗口返回到main函数中,继续藜局腑载添加“获取原始控制台标题”的测试代码。在这份代码中,主要通过API函数GetConsoleOriginalTit造婷用痃le获得控制台的原始标题。在需要应用程序绝对路径时,同样可以通过此函数获取。代码添加完毕后,调试运行程序。在弹出的控制台窗口中,你可以见到输出的控制台原始标题,与最初获得的一样(注意:当前控制台标题已经被之前的代码修改了);
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/354e7a781423beb919b4557730d6e1d06ce8b323.jpg)
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/2083a5d6e1d06de8eeebf290ca93cee8b104ac23.jpg)
6、关闭控制台程序,返回到main函数中。接下来,我打算修改一下控制台的文字输出设置。因为在编写上述测试代码时,无法通过wprintf函数输出带有中文的宽字符字符串(所以我会用_tprintf输出英文描述)。修改控制台输出的方法非常简单,只要用setlocale函数指定下字符串格式转换方式即可;
7、在“ConsoleDemo5.cpp”文件中,包含“locale.h”头文件,然后在main函数中添加“修改控制台区域并使用wprintf输出中文字符”的测试代码。代码添加完毕后,调试运行程序。在弹出的控制台窗口中,可以见到正确输出的UNICODE字符串;
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/87645f93cee8b0042d91a5ba79260d9a300ea923.jpg)
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/d04eec260d9a310e69139d9f31b842406bfea223.jpg)
![[控制台(5)] 获取和设置控制台窗口标题[TZZ]](https://exp-picture.cdn.bcebos.com/e86ba4b842406afe409e85701eee41c1b6279f23.jpg)
8、这里需要补充说明一下,如果通过setlocale函数设置控制台区域的代码在MinGW或Cygwin中执行,可能遇到无效的情况。这是因为在Linux环境中,控制台采用UTF-8编码,而Windows中则采用ANSI。只有保证代码编码格式一直,才能正确输出中文。Enjoy!