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

本文为转载文档,源文档链接: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.  

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual C++窗口标题改变的几种方法 在论坛,经常有人会问到这个问题,所以今天整理了几种方法用来改变窗口标题,希望对这些朋友有所帮助。    一•单文档接口(SDI)类型窗口标题的改变    首先,我们来看Windows SDI类型窗口标题栏的结构形式。结合具体例子说明:用VC的AppWizard创建一个名为“SDITitle”的单文档类型的工程,创建完工程后,编译运行该工程,程序主窗口标题形式如下:    文档标题窗口标题    1•文档标题的改变    文档标题在是由工程相应的文档类所控制的,因此我们可以利用SetTitle ()函数来改变文档标题。 例:改变CSDITitleDoc::OnNewDocument() 函数为: BOOL CSDITitleDoc::OnNewDocument()    { if (!CDocument::OnNewDocument()) return FALSE; SetTitle (" 文档标题 " );    return TRUE;    }    运行程序,则每次选择选单的“文件”的“新建”选项时,文档标题就变成 “文档标题- SDITitle”。    2•主窗口标题的改变    主窗口标题默认是工程的文件名,正如前面AppWazied生成的SDITitle工程执行后,标题栏的形式总为“(文档名)- SDITitle”。    改变主窗口标题有两种:    第一种方法:利用ResourceView打开工程的资源,修改String Table的IDR_MAINFRAME的值。将原来的“SDITitle\n\nTitle\n\n\nTitle.Document\nTitle Document”改为“标题改变示例\n\nTitle\n\n \nTitle. Document\nTitle Document”。这样改变后,主窗口标题栏的形式就为“((((-标题改变示例”。    第二种方法:具体改变方法如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值