安装钩子,托管C++中的字符串及其它
2006-07-20 11:42:41 来源:WEB开发网.NET 的处理方式使用文本或 XML 资源文件(.resx)卫星程序集。在 .NET 中有两种资源:字符串和对象。对于字符串来说,你只要创建一个名字=值对( name=value ).txt文件,然后运行 resgen.exe。你的程序要调用 ResourceManager.GetString 来获取字符串。其它的处理包括你得编写一个将对象序列化到 .resx 文件的程序,然后在运行时调用 ResourceManger.GetObject 加载它。具体细节请参考文档或我的文章。在我的我的文章中,我编写 FileRes 类以及一个例子程序 FileResGen 来示范如何做, FileResGen 大大简化了基于文件的资源处理,如:图像文件(.BMP, .GIF, .JPG等等)。
.NET 处理资源的方式其优点在于更容易本地化。只要翻译文本/资源并将它保存在一个子文件夹中,该文件的名字应该与语言缩写名相同——比如:en 代表 English,fr 代表 Franch,或者 kv 代表 Komi。框架会根据用户系统的 CultureInfo.CurrentUICulture 设置自动加载适当的程序集(MFC 使用类似的基于 GetSystemDefaultUILanguage 的卫星动态连接库来处理本地化)。如果你想在 .NET 领域有所作为,那么得用使用卫星程序集和 ResourceManager 重写你的库代码。但是如果本地化并不是很重要(也许你只是加载内部错误信息,这些信息用户看不到)或者工期很短,那么你仍可以按照老方法从 .RC 文件加载串资源。但你得调用 ::LoadString 或在内部使用 CString,加载字符串,然后将它拷贝到调用者的 String 对象。用 C++ 写这样的程序是很爽的事情!你可以直接调用 Windows APIs,不用显式使用 P/Invoke,象往常一样使用你最爱的 ATL/MFC 类。因为你要从 DLL 中加载字符串,而不是从应用程序中加载,所以唯一的诀窍是必须显式地告诉 LoadString 使用你的 DLL HINTANCE:
CString s;
HINSTANCE h = ::GetModuleHandle(_T("MyLib.dll")); // use DLL''s handle
s.LoadString(h, id);
Figure 3 是全部的实现代码。编译后运行 RefTest 的画面如 Figure 5 所示。与往常一样,更多信息和具体实现细节请参考本文例子程序源代码。
Figure 5 RefTest 运行画面馆
顺祝编程愉快!
您的提问和评论可发送到 Paul 的信箱:cppqa@microsoft.com.
- ››安装与卸载Win 8双界面应用程序
- ››安装CentOS的注意事项
- ››安装 Intel C++ Compiler 12 以后,VC6 不能编译的...
- ››安装win 8 让Win7与Win8双系统共存
- ››安装YLMF OS及VBox增强功能
- ››安装EPP的调试Zend Debugger
- ››安装并配置SQL Server 2005群集
- ››安装WebSphere WAS应用服务器
- ››安装Android开发工具
- ››安装和卸载Android应用程序(apk包)的命令
- ››安装APK文件到Android模拟器和Android sdcard的使...
- ››安装CentOS oracle过程设置使用解压包
更多精彩
赞助商链接