由于移动VC6的代码到CodeBlocks中进行编译,VC6项目中使用UNICODE编译支持,拿到CB下面编译就会出现字符串不符合要求的提示,而且被CB自动改成了UTF-8格式文件,直接出现乱码,后来查了一下网上的说法,一是直接使用 “中文”这种就可以了,二是改成UTF-8编码格式的文件,可以使用记事本将VC6的源码打开,存为UTF-8格式,第三种就是直接在CB中写UTF-8编码的程序,可以把文件格式在菜单Edit->File encoding下面勾选save as BOM和UTF-8选项,源程序中:
#define UNICODE
#define _UNICODE
#include <windows.h>
#include <tchar.h>//这上面还是和VC6下面方式一样。
字符串用下面的方式给出,可正常编译。
TCHAR szClassName[ ] = _T("CodeBlocksWindowsApp");
TCHAR szTitle[] = _TEXT("中文标题");
TCHAR msg[] = TEXT("你好!");
关于BOM其实就是文本文件的格式标识头,前三个字节为0xEF 0xBB 0xBF即为UTF-8编码,使用C语言的文件读取进行判断文本格式时,需要定义为:
unsigned char BOM[3];
....
fread(BOM, sizeof(BOM), 1, fp);
读取3个连续的字符。
练习一下用WinAPI写记事本时可以用得上,准备自己也练习下记事本,主要想实现行号显示和多Tab页风格及双开文档左右或是上下对比用,并添加历史记录功能,添加工具栏,使用了很久的XP记事本,终于觉得非常不满意了,呵呵,思考了一下,基本上这些功能都能实现。