LoadString、LoadIcon和LoadCursor函数

在编写国际化的应用程序里,经常要使用不同语言的字符串。比如中文菜单里叫做“文件”,而在英语里叫做“ File ”。开发这种软件的功能是一样的,只是界面上显示的文字不一样而已。为了方便这种软件的开发,在 Windows 里经常使用的方法就是替换掉显示的字符串,比如指定在中文里就显示“文件”,在英语里就显示“ File ”,是通过函数 LoadString 从不同的资源里加载不同的字符串显示来实现的。其实所有可变的字符串,都可以使用函数 LoadString 从资源里加载字符串显示。
 
图像的信息是非常方便人们记忆的,像交通信号一样,就是使用各种各样的图标,每个人看了就会明白是什么东西,因此在程序里使用图标来标识程序。只要看到这个图标,就知道是这个软件做什么用的。比如在程序的左上角显示的图标,就需要调用函数 LoadIcon 从资源里加载到内存里,然后再显示出来。
 
光标更是最常用的图标了,时时刻刻都可以看到它。当你在编辑文件时,光标显示为一个“ I ”字形图标,当你在桌面操作文件时,显示为一个箭头。这样变化的光标,就是因为设置了不同的图标。光标的使用,就是根据不同的区域来作不同的指示。更换光标的函数是 LoadCursor
 
函数 LoadString 声明如下:
WINUSERAPI int WINAPI LoadStringA(     __in_opt HINSTANCE hInstance,     __in UINT uID,     __out_ecount(cchBufferMax) LPSTR lpBuffer,     __in int cchBufferMax); WINUSERAPI int WINAPI LoadStringW(     __in_opt HINSTANCE hInstance,     __in UINT uID,     __out_ecount(cchBufferMax) LPWSTR lpBuffer,     __in int cchBufferMax); #ifdef UNICODE #define LoadString  LoadStringW #else #define LoadString  LoadStringA #endif // !UNICODE
 
hInstance 是应用程序实例句柄。

uID 是资源中的字符串编号。
lpBuffer 是接收从资源里拷贝字符串出来的缓冲区。
cchBufferMax 是指明缓冲的大小。
 
函数 LoadIcon 声明如下:
WINUSERAPI HICON WINAPI LoadIconA(     __in_opt HINSTANCE hInstance,     __in LPCSTR lpIconName); WINUSERAPI HICON WINAPI LoadIconW(     __in_opt HINSTANCE hInstance,     __in LPCWSTR lpIconName); #ifdef UNICODE #define LoadIcon  LoadIconW #else #define LoadIcon  LoadIconA #endif // !UNICODE
hInstance 是应用程序实例句柄。
lpIconName 是指向图标的名称。
 
函数 LoadCursor 声明如下:
WINUSERAPI HCURSOR WINAPI LoadCursorA(     __in_opt HINSTANCE hInstance,     __in LPCSTR lpCursorName); WINUSERAPI HCURSOR WINAPI LoadCursorW(     __in_opt HINSTANCE hInstance,     __in LPCWSTR lpCursorName); #ifdef UNICODE #define LoadCursor  LoadCursorW #else #define LoadCursor  LoadCursorA #endif // !UNICODE
hInstance 是应用程序实例句柄。
lpCursorName 是光标的名称。
 
调用这三个函数的例子如下
 
//  函数: MyRegisterClass() //  目的: 注册一个窗口类型.
 ATOM MyRegisterClass(HINSTANCE hInstance)  { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style             = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc  = WndProc; wcex.cbClsExtra           = 0; wcex.cbWndExtra        = 0; wcex.hInstance      = hInstance; wcex.hIcon               = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TESTWIN)); wcex.hCursor      = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName     = MAKEINTRESOURCE(IDC_TESTWIN); wcex.lpszClassName     = szWindowClass; wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassEx(&wcex); }
 
// 加载全局字符串。
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
tag:No1将hInstance当前实例中的资源文件中的IDS_APP_TITLE定义的字符放在szTitle中
上面两行就是调用函数 LoadString 从资源里获取显示的字符串。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值