在bmp上写字

来源:互联网 发布:2017年网络词汇 编辑:程序博客网 时间:2024/04/28 23:04

 

 

1、如何在bmp上写字,画画等

 

http://blog.csdn.net/yacper/archive/2010/02/09/5303458.aspx

 

 

 

2、C++文件读写

http://blog.csdn.net/xiaoci126/archive/2010/09/11/5877213.aspx

 

 

 

 

3、如何取得桌面、开始菜单等特殊位置路径

http://blog.csdn.net/sinbh2/archive/2009/08/05/4412389.aspx

 

 

 

4、C++多态的分类

重载多态,强制多态,包含多态,参数多态。普通函数和类的成员函数的重载属于重载多态,还有运算符重载。强制多态包括类型强制转换等。包含多态主要通过虚函数来实现。参数多态和类模板相关。

 

 

 

5、C运行时的本地化

setlocale:
函数原形为:char *setlocale( int category, const char *locale );
头文件:<locale.h>
所支持的操作系统为:ANSI, Win 95, Win NT
对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" );

函数功能:设置场景信息。场景信息可以是指定的某个区域的语言、货币、时间以及其它的信息。

 

字符集目前有两个大的类别:本地字符集和国际字符集,其中每一类别的字符集又有多个不同的字符编码实例。比如:本地字符集中基本上对于每一个不同的地区和国家就会形成一个属于自己的字符集(ascii, latin-1, chs等),国际字符集中同样包括多种不同的编码方案
(utf8, utf16等)。


那么在C/C++程序中如何完成上述字符集之间的转换工作呢?分成两种情况:


I. 通过const char *cstr使用开发环境中的编辑器输入字符串常量"中国",如下:
            const char *cstr = "中国";
这样一来cstr所指向的字符串内存中保存的则是本地字符编码下所形成的字符串,也就是说,上面的cstr中存储着chs字符编码集中的字符。


II. 通过const wchar_t *wstr使用开发环境中的编辑器输入字符串常量"中国",如下:
            const wchar_t *wstr = L"中国";
这样一来wstr所指向的字符串内存中保存的则是国际字符编码(在VC++下是ucs2,在gcc下是ucs4)下所形成的字符串,也就是说,上面的wstr中存储着utf16字符编码集中的字符。   

 

那么如何将cstr转换成为wstr呢?可以通过C语言中的标准转换函数mbstowcs来完成该工作,此时需要注意的是如果直接使用mbstowcs进行转换会得到一个错误的结果,并不能成功的完成转换成为国际宽字符的要求,这是为什么呢?在C/C++语言标准中定义了其运行时的
字符集环境为"C",也就是ASCII字符集的一个子集,那么mbstowcs在工作时会将cstr中所包含的字符串看作是ASCII编码的字符,而不认为是一个包含有chs编码的字符串,所以他会将每一个中文拆成2个ASCII编码进行转换,这样转换得到的结果就是会形成4个wchar_t的字符组成的串。

 

那么如何才能够让mbstowcs正常工作呢?在调用mbstowcs进行转换之间必须明确的告诉mbstowcs目前cstr串中包含的是chs编码的字符串,通过setlocale( LC_ALL, "chs" )函数调用来完成,需要注意的是这个函数会改变整个应用程序的字符集编码方式,必须要通过重
新调用setlocale( LC_ALL, "C" )函数来还原,这样就可以保证mbstowcs在转换时将cstr中的串看作是中文串,并且转换成为2个wchar_t字符,而不是4个。

原创粉丝点击