控制台界面控制(三):设置窗口标题

news/2024/7/4 7:14:54

本文为转载文档,源文档链接:http://blog.csdn.net/bnb45/article/details/7981421

 

 

相关信息

 

字符编码 UNICODE:如果只是用英文字母就能代表足够多的意思,UNICODE就不会出现了。著名的 ASCII 码已经可以表示大部分信息,它是一种非常可靠的标准,没有其他哪一种标准能像 ASCII 一样普及。但在美国之外的世界里,ASCII 就显得力不从心。例如我国有上万个不同的字,区区百来个表示符号根本无从表示。于是可以想见,各个地方都出现了不同的编码规格,以满足对本国字符的支持,它们是不统一的。倘若一个国家或地区的编码要让另一个国家或地区的计算机识别,这并不是一件容易的事,不同的规格之间需要不同的转换和解释程序,困难重重。为了尽量避免编码上的歧义性,UNICODE 做出了重大的贡献。它最棒的地方是,UNICODE 就只有一个字符集,避免二义性。它是一种和 ASCII 完全不同的编码规范,缺点是需要占用更大的内存空间。既然各有优缺点,也就没有纯粹的谁好谁坏,这时候也就会带来一个问题:到底在什么时候该用哪种编码规范?答案是不确定的,需要视情况而定。而我们知道,在事情的开端就做一个重要的决定是很危险的,搞不好要重新来过。相比于在写一个程序的时候就确定一个标准,在后期进行灵活切换要来得更安全些,且方便。

一般通过宏定义来解决这个问题。如果头文件中定义了 UNICODE,那么整个文档中的编码格式就是 UNICODE,否则 ASCII。这个办法是很好的。

C++ 支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹)。Windows 编程中定义了一些宏,比如 TEXT(""),比如 _stprintf。它们在定义了UNICODE 时分别表示为 L“”,和 swprintf,否则为 ASCII 版的 "" 和sprintf;

设置窗口标题

设置窗口标题的函数为:SetConsoleTitle。我想把它封装在 MyConsole 类中:

[cpp] view plaincopy

  1. // ---- 设置窗口标题  
  2. void CMyConsole::SetTitle(const TCHAR *chTitle)  
  3. {  
  4.     SetConsoleTitle(chTitle);  
  5. }  

函数参数类型为 TCHAR,它可以灵活地在 ASCII 和 UNICODE 中切换;这样一来在输入文本的时候也就需要注意,同样地要使用泛型版本:TEXT(),如下:

[cpp] view plaincopy

  1. myConsole.SetTitle("Test");         // ASCII版,Unicode版本编译不通过  
  2. myConsole.SetTitle(TEXT("Test"));   // 通用版  

后续

实际上在控制台中运用UNICODE很不方便,因为它本来就很精简,很多函数在非UNICODE环境下很好用,定义了UNICDOE反而不好处理。定义UNICODE给我在后面的封装过程中带来了许多的麻烦,无奈之下取消了它。在项目->属性->配置属性->常规->字符集,由“使用Unicode字符集”改为“未设置”。

[cpp] view plaincopy

  1. // ---- 设置窗口标题  
  2. void CMyConsole::SetTitle(const char *chTitle)  
  3. {  
  4.     SetConsoleTitle(chTitle);  
  5. }  
  6.  

 


http://www.niftyadmin.cn/n/3656347.html

相关文章

控制台界面控制(四)

本文为转载文档,源文档链接:http://blog.csdn.net/bnb45/article/details/7983562 设置光标位置 [cpp] view plaincopy // ---- 设置光标位置 void CMyConsole::Goto(short x, short y) { COORD pos {x, y}; SetConsoleCursorPosition(…

Javascript:检测FlashPlayer版本的函数

functiongetFlashVer() {//获得flashplayer的版本 googlevarf"",nnavigator; if(n.plugins &&n.plugins.length) { for(varii0;ii<n.plugins.length;ii) { if(n.plugins[ii].name.indexOf(Shockwave Flash)!-1) { fn.plugins[ii].description.spli…

控制台界面控制(五):文字颜色

本文为转载文档&#xff0c;原文档链接&#xff1a;http://blog.csdn.net/bnb45/article/details/7994025 设置字符属性 VC控制台提供了一个设置文本属性的函数&#xff0c;它的作用包括设置文本颜色&#xff0c;设置文本背景颜色&#xff0c;以及下划线等。 [cpp] view plain…

Calculator.NET 2.3发布

科学计算器 2.3发布简介支持表达式计算的科学计算器。完全可以替代Windows自带的计算器&#xff0c;使用起来更加人性化。支持变量保存、三角函数运算、指幂运算、角度弧度转换&#xff0c;除了Windows计算器的进制计算不支持外&#xff0c;其他的功能都已经实现。关于我为什么…

理解Session State模式+ASP.NET SESSION丢失FAQ [翻译]

作者&#xff1a;Patrick Y. Ng原文地址&#xff1a;http://forums.asp.net/7504/ShowPost.aspx译者&#xff1a;Tony Qu (来自BluePrint翻译团队)原文最后一次更新&#xff1a;2004年9月21日本文被分成两部分&#xff1a;1.“理解Session State模式”——帮助你理解三种Sessio…

控制台界面控制(六):边框

本文为转载文档&#xff0c;源文档地址&#xff1a;http://blog.csdn.net/bnb45/article/details/7997603 效果 [cpp] view plaincopy #include "MyConsole.h" #include <stdio.h> int main() { CMyConsole myConsole; SMALL_RECT rc {5, 5…

控制台界面控制(七):移动文本

本文为转载文档&#xff0c;原文链接&#xff1a;http://blog.csdn.net/bnb45/article/details/8034597 控制文本的移动&#xff0c;可以取代清屏再重绘操作。如果用来做文本编辑器的滚动条是很合适的&#xff0c;也许也可以用在俄罗斯方块上面。控制台使用一个函数把某个区域内…

[winform入门级好书]c# Windows Forms程序设计

书名&#xff1a;c# Windows Forms程序设计作者&#xff1a;Erik Brown[美]译者&#xff1a;朱毓斌、吴飞出版社&#xff1a;清华大学出版社售价&#xff1a;78元个人书评&#xff1a;本书操作步骤详细&#xff0c;完全可以与step by step级的书相媲美&#xff0c;而且涉及了许…