在中文2000 Professional下,用API hook了TextOutA、TextOutW、ExtTextOutA、ExtTextOutW等函数后,发现一个很奇怪的问题。比如,我自己编写的函数是
HookExtTextOutW(HDC hdc,
int X,
int Y,
UINT fuOptions,
CONST RECT *lprc,
LPCWSTR lpString,
INT cbCount,
CONST INT *lpDx)该函数用来取代GDI32中的ExtTextOutW,当为桌面设置Terminal或者System字体时,lpString中存放的是实际桌面上的字符串,可是当把桌面字体设置为Tahoma或者宋体时,lpString中得到的却是乱码,请问lpString和字体是什么关系?谢谢!
HookExtTextOutW(HDC hdc,
int X,
int Y,
UINT fuOptions,
CONST RECT *lprc,
LPCWSTR lpString,
INT cbCount,
CONST INT *lpDx)该函数用来取代GDI32中的ExtTextOutW,当为桌面设置Terminal或者System字体时,lpString中存放的是实际桌面上的字符串,可是当把桌面字体设置为Tahoma或者宋体时,lpString中得到的却是乱码,请问lpString和字体是什么关系?谢谢!
解决方案 »
- 使用MCI_STATUS_LENGTH参数查询 曲目长度,返回值的问题
- 扫描注册表某一项下所有的项,如 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 意思是循环该项目所有的值.
- CDib类只能打开真彩色的BMP图像,问题出在哪?
- 切换视图出现异常,第一次条件为F或M都可以切换正常,但再切换就出现异常
- 一个PORT能不能几个程序同时用?
- 宾馆上网用的什么技术
- 照着一些文章写了个串口通信等待接收的线程函数,请帮忙看一下,有些地方不明白
- 怎么样读下载的vc原程序
- 在不改变尺寸的情况下,压缩图片大小
- help------如何去掉向导中的帮助
- 怎么样完全隐藏一个文件(文件夹)
- vc71移植到vc8上xp风格的问题
W 带表宽字符
lpString 返回的是 unicode 字符即宽字符!
如果这个字串中有英文你调试时看到的就是乱码!
char szBuff[MAX_TEXTBUFFER_LEN*2];
int nIndex;
int nOldLen, nNewLen, nNewChars;
DWORD dwRet;
cbLen = WideCharToMultiByte(GetACP(), 0,
lpString , cbCount,
szBuff, MAX_TEXTBUFFER_LEN*2, NULL, NULL);
szBuff[cbLen] = 0x00;打印szBuff里的内容,得到的是乱码,但是乱码只出现在资源管理器的右侧窗口中,而且只有在选择“图标”或者“缩略图”查看方式时才有乱码,设置“列表”和“详细资料”查看方式时也是好的。而且还有一个特征,当为桌面设置Terminal或者System字体时,szBuff中无乱码,打印出的内容是正常的,可是当把桌面字体设置为Tahoma或者宋体时,szBuff中得到的却是乱码
支持宽字符么