VC++6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。
使用VC++6.0进行Unicode编程主要做以下几项工作:
1、为工程添加UNICODE和_UNICODE预处理选项。
具体步骤:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开).
在没有定义UNICODE和_UNICODE前,所有函数和类型都默认使用ANSI的版本;在定义了UNICODE和_UNICODE之后,所有的MFC类和Windows API都变成了宽字节版本了。
2、设置程序入口点
因为MFC应用程序有针对Unicode专用的程序入口点,我们要设置entry point。否则就会出现连接错误。
设置entry point的方法是:打开[工程]->[设置…]对话框,在Link页的Output类别的Entry Point里填上wWinMainCRTStartup。
3、使用ANSI/Unicode通用数据类型
微软提供了一些ANSI和Unicode兼容的通用数据类型,我们最常用的数据类型有_T ,TCHAR,LPTSTR,LPCTSTR。
顺便说一下,LPCTSTR和const TCHAR*是完全等同的。其中L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在Win32 中以及其它的32位操作系统中,long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。P(pointer)表示这是一个指针;C (const)表示是一个常量;T(_T宏)表示兼容ANSI和Unicode,STR(string)表示这个变量是一个字符串。综上可以看出, LPCTSTR表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。比如:
TCHAR* szText=_T(“Hello!”);TCHAR szText[]=_T(“I Love You”);LPCTSTR lpszText=_T(“大家好!”);
使用函数中的参数最好也要有变化,比如:
MessageBox(_T(“你好”));
其实,在上面的语句中,即使您不加_T宏,MessageBox函数也会自动把“你好”字符串进行强制转换。但我还是推荐您使用_T宏,以表示您有Unicode编码意识。
4、修改字符串运算问题
一些字符串操作函数需要获取字符串的字符数(sizeof(szBuffer)/sizeof(TCHAR)),而另一些函数可能需要获取字符串的字节数sizeof(szBuffer)。您应该注意该问题并仔细分析字符串操作函数,以确定能够得到正确的结果。
ANSI操作函数以str开头,如strcpy(),strcat(),strlen();
Unicode操作函数以wcs开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode操作函数以_tcs开头 _tcscpy(C运行期库);
ANSI/Unicode操作函数以lstr开头 lstrcpy(Windows函数);
考虑ANSI和Unicode的兼容,我们需要使用以_tcs开头或lstr开头的通用字符串操作函数。
六、举个Unicode编程的例子
第一步:
打开VC++6.0,新建基于对话框的工程Unicode,主对话框IDD_UNICODE_DIALOG中加入一个按钮控件,双击该控件并添加该控件的响应函数:
void CUnicodeDlg::OnButtonUnicode() { TCHAR* str1=_T("ANSI和UNICODE编码试验"); m_disp=str1; UpdateData(FALSE);}
添加静态文本框IDC_DISP,使用ClassWizard给该控件添加CString类型变量m_disp。使用默认ANSI编码环境编译该工程,生成Unicode.exe。
第二步:修改系统内码
打开“控制面板”,单击“日期、时间、语言和区域设置”选项,在“日期、时间、语言和区域设置”窗口中继续单击“区域和语言选项”选项,弹出“区域和语言选项”对话框。在该对话框中,单击“高级”标签,将“非Unicode的程序的语言”选项改为“日语”,单击“应用”按钮,
弹出的对话框单击“是”,重新启动计算机使设置生效。
运行Unicode.exe程序并单击“Button1”按钮,看,静态文本框出现了乱码。
第三步:
改为Unicode编码环境编译该工程,生成Unicode.exe。再次运行Unicode.exe程序并单击“Unicode”按钮。看到Unicode编码的优势了吧。
分享到:
相关推荐
LINK:fatal error LNK1104:cannot open file "mfc42ud.lib" 这是因为缺少支持Unicode的文件;... 压缩包里提供了MFC支持unicode编码的lib文件和dll文件及说明文档,同时还有VC6下设置UNICODE编译环境的文档.
在VC6.0中,当你选择Unicode编译选项时,编译器会链接到Unicode版本的MFC库。这些库文件包含了处理Unicode字符集的函数和类,使得程序能够正确地显示和处理各种语言的文本。如果你在编写需要支持多种语言的应用程序...
2. **在VC6.0下设置Unicode编译环境** VC6.0默认支持多字节字符集(MBCS),若要支持Unicode编码,需进行以下设置: - 项目属性设置:打开项目的属性页,选择“配置属性” -> “C/C++” -> “代码生成”,在“运行时...
总结来说,VC6.0和Visual Assist X for VC6.0是早期软件开发的标志性工具,它们在当时具有很高的价值,但现在可能需要考虑升级到现代的开发环境,以利用最新的语言特性和工具。如果你仍然需要使用这些工具,确保了解...
1. **集成开发环境**:VC6.0集成了代码编辑器、编译器、链接器、资源编辑器和调试器等多个开发工具,使得程序员可以在同一环境中完成代码编写、编译、调试等全部工作。 2. **MFC库**:VC6.0包含了Microsoft ...
1. **Unicode支持**:VC6.0不支持Unicode,这在处理多语言或字符集时可能会成为限制。 2. **内存管理**:现代C++标准推荐使用智能指针进行内存管理,而VC6.0中这些特性相对较弱。 3. **库的更新**:许多现代库和...
因此,虽然VC6.0在某些场景下仍然有用武之地,但在新项目开发中通常建议使用更新的Visual Studio版本,以获取更好的安全性和功能支持。 在安装VC6.0时,解压文件后,通常会有一个名为“Microsoft Visual Studio”的...
VC6.0 将程序打包成一个可执行文件(release) 是一种常见的操作,在这种操作中,我们需要将编译好的程序打包成一个独立的可执行文件,以便在不同的环境中运行。在这篇文章中,我们将学习如何使用 VC6.0 将程序打包成...
尽管VC6.0在很多方面表现出色,但也存在一些限制,例如不支持现代C++标准(如C++11及以上),并且对Unicode和宽字符支持不足。此外,由于年代较早,它可能无法很好地兼容一些新硬件和操作系统特性。因此,在实际开发...
在使用Visual C++ 6.0 (VC6.0)进行编程时,可能会遇到一系列链接错误,例如LNK2001,这是由于多种原因引起的。以下是一些常见的解决方法: 1. **Windows子系统设置错误**:当你试图运行一个原本应该作为Windows应用...
VC6.0,全称Microsoft Visual C++ 6.0,是微软公司发布的一款集成开发环境,主要用于编写C、C++以及MFC等程序。它在20世纪90年代末期至本世纪初,是许多程序员入门和开发Windows应用程序的首选工具。尽管现在已经有...
尽管VC6.0在许多方面仍然实用,但存在一些局限性,如不支持现代C++特性、对Unicode和宽字符集支持不足、以及安全性问题。因此,对于新的Windows开发项目,通常推荐使用更新的IDE,如Visual Studio 2019等。 **五、...
Visual C++ 6.0(简称VC6.0)是由Microsoft公司推出的经典集成开发环境(IDE),主要用于编写基于C++语言的Windows应用程序。它集成了编译器、调试器以及丰富的资源编辑器,是C++初学者和专业开发者的重要工具。本...
- **简洁的IDE(集成开发环境)**:VC6.0拥有一个直观的界面,便于用户编写、编译和调试代码。 - **MFC支持**:VC6.0内嵌了Microsoft Foundation Classes (MFC),使得开发Windows应用程序变得更加便捷。 - **兼容性*...
4. **编译错误和警告**:VC6.0在编译时可能会忽略一些现代编译器会报告的错误和警告,这可能导致难以发现潜在的问题。 尽管如此,对于学习经典C++语法、了解MFC框架或者维护旧代码库的开发者来说,VC6.0中文版仍然...
在这个标题为“XListCtrl 已添加缺少文件,VC6.0成功编译”的项目中,我们看到开发者不仅增强了XListCtrl的功能,还确保了在较老的Visual C++ 6.0环境下能够顺利编译和运行。 首先,XListCtrl的一大亮点是它允许对...
8. **向后兼容性**:VC6.0可以编译许多早期的C++代码,使得老项目能继续在新环境中运行和维护。 然而,需要注意的是,由于年代久远,VC6.0存在一些限制和已知问题: - **安全性**:由于不包含现代的安全特性,如...
Visual C++ 6.0(简称VC6.0)是Microsoft在1998年发布的一款集成开发环境,它对于许多程序员来说,不仅是学习C++的入门工具,也是开发Windows应用程序的经典选择。虽然微软已经推出了更新的版本,但VC6.0因其简洁的...
**在Win7 X64系统上的兼容性**:由于Windows 7的64位版本(X64)与传统的32位软件可能存在兼容性问题,VC6.0精简版经过优化,能够确保在这样的环境下正常运行,满足64位系统的用户需求。 **蓝桥杯**:这可能是指...