[控制台(5)] 获取和设置控制台窗口标题[TZZ]

时间:2024-10-11 18:57:10

1、打开VS2017,然后新建一个名为“ConsoleDemo5”的“Windows控制台应用程序”项目;

[控制台(5)] 获取和设置控制台窗口标题[TZZ]

2、在打开的“ConsoleDemo5.cpp”文件中,包含Windows.h头文件,然后在main函数中使用system函数暂停程序执行。代码添加完毕后,调试执行程序。在弹出的控制台窗口中,你会发现其标题实际上是控制台程序的绝对路径;

[控制台(5)] 获取和设置控制台窗口标题[TZZ]
[控制台(5)] 获取和设置控制台窗口标题[TZZ]

3、关闭控制台窗口返回到main函数中,在main函数之上包含“strsafe.h”头文件,然后在mai荏鱿胫协n函数中添加通过GetConsoleTitle函数获取控制台标题的测试代码。由于控制台标题字符串的长度一定不会超过“MAX_PATH”常量定义的路径长度。因此,这里定义一个MAX_PATH长度的局部变量,用于保存获取的控制台标题。代码添加完毕后,调试运行程序。在弹出的控制台窗口中,可以见到打印的控制台标题;

[控制台(5)] 获取和设置控制台窗口标题[TZZ]
[控制台(5)] 获取和设置控制台窗口标题[TZZ]

4、关闭控制台程序返回到main函数中,继续添加“设置控制台标题”的测试代码。在这份代码中,通过StringCchPrintf函数格式化字符串并保存到变量title中,然后通过API函数SetConsoleTitle将其设置为窗口标题。代码编写完毕后,调试运行程序。在弹出的控制台窗口中,你会发现窗口标题已经变成了代码中设置的值;

[控制台(5)] 获取和设置控制台窗口标题[TZZ]
[控制台(5)] 获取和设置控制台窗口标题[TZZ]

5、关闭控制台窗口返回到main函数中,继续藜局腑载添加“获取原始控制台标题”的测试代码。在这份代码中,主要通过API函数GetConsoleOriginalTit造婷用痃le获得控制台的原始标题。在需要应用程序绝对路径时,同样可以通过此函数获取。代码添加完毕后,调试运行程序。在弹出的控制台窗口中,你可以见到输出的控制台原始标题,与最初获得的一样(注意:当前控制台标题已经被之前的代码修改了);

[控制台(5)] 获取和设置控制台窗口标题[TZZ]
[控制台(5)] 获取和设置控制台窗口标题[TZZ]

6、关闭控制台程序,返回到main函数中。接下来,我打算修改一下控制台的文字输出设置。因为在编写上述测试代码时,无法通过wprintf函数输出带有中文的宽字符字符串(所以我会用_tprintf输出英文描述)。修改控制台输出的方法非常简单,只要用setlocale函数指定下字符串格式转换方式即可;

7、在“ConsoleDemo5.cpp”文件中,包含“locale.h”头文件,然后在main函数中添加“修改控制台区域并使用wprintf输出中文字符”的测试代码。代码添加完毕后,调试运行程序。在弹出的控制台窗口中,可以见到正确输出的UNICODE字符串;

[控制台(5)] 获取和设置控制台窗口标题[TZZ]
[控制台(5)] 获取和设置控制台窗口标题[TZZ]
[控制台(5)] 获取和设置控制台窗口标题[TZZ]

8、这里需要补充说明一下,如果通过setlocale函数设置控制台区域的代码在MinGW或Cygwin中执行,可能遇到无效的情况。这是因为在Linux环境中,控制台采用UTF-8编码,而Windows中则采用ANSI。只有保证代码编码格式一直,才能正确输出中文。Enjoy!

© 手抄报圈