请问一下,当在一个Edit中输入两个汉字后,如何才能取到这两个汉字的拼音呢?
比如 小明 怎么才能自动得到 xiaoming呢? 怎么进行这个转换呢?
比如 小明 怎么才能自动得到 xiaoming呢? 怎么进行这个转换呢?
解决方案 »
- 如何把16进制0x123456789ABCDEF0BBCC转换成字符串“123456789ABCDEF0BBCC”
- GIS地图中的 鸟瞰图问题
- [原创]H.264视频编码技术学习资源
- 如何从WINDOWS 2000中取回用户密码?
- 在死循环中如何降低cpu使用
- how to make a childframe or mainframe produce a scroll bar?
- vc控制工业信号
- 在vista里装了vc6.0后装了vista sdk 编译老出错
- 什么是pdb,idb文件?
- 在vc当中开发了一个dll,要在pb当中使用,怎么样个处理过程???
- 请教各位大虾,关于OCX的问题?
- 救命啊~~~~~~~~~~~~~~~~~~~~~
不过不知道那里有这种文件下载,你用google搜索一下
{
CString strResult;
// TODO: Add your dispatch handler code here
INT cFirst;
INT cSecond; if((sHanzhi[0]&0x00ff)>0xa0)
{
cFirst=(sHanzhi[0]-0xa0)&0x7f;
cSecond=(sHanzhi[1]-0xa0)&0x7f; if(cFirst==16&&cSecond<=36)
strResult="A";
if((cFirst==16&&cSecond>36)||(cFirst==17)||(cFirst==18&&cSecond<=32))
strResult="B";
if((cFirst==18&&cSecond>32)||(cFirst==19)||(cFirst==20&&cSecond<=77))
strResult="C";
if((cFirst==20&&cSecond>77)||(cFirst==21)||(cFirst==22&&cSecond<=73))
strResult="D";
if((cFirst==22&&cSecond>73)||(cFirst==23&&cSecond==1))
strResult="E";
if((cFirst==23&&cSecond>1)||(cFirst==24&&cSecond<=32))
strResult="F";
if((cFirst==24&&cSecond>32)||(cFirst==25&&cSecond<=93))
strResult="G";
if((cFirst==25&&cSecond==94)||(cFirst==26)||(cFirst==27&&cSecond<=86))
strResult="H";
if((cFirst==27&&cSecond>86)||(cFirst==28)||(cFirst==29)||(cFirst==30)||(cFirst==31&&cSecond<=5))
strResult="J";
if((cFirst==31&&cSecond>5)||(cFirst==32&&cSecond<=11))
strResult="K";
if((cFirst==32&&cSecond>11)||(cFirst==33)||(cFirst==34&&cSecond<=71))
strResult="L";
if((cFirst==34&&cSecond>71)||(cFirst==35)||(cFirst==36&&cSecond<=34))
strResult="M";
if((cFirst==36&&cSecond>34)||(cFirst==37&&cSecond<=21))
strResult="N";
if((cFirst==37&&cSecond>21&&cSecond<=29))
strResult="O";
if((cFirst==37&&cSecond>29)||(cFirst==38&&cSecond<=57))
strResult="P";
if((cFirst==38&&cSecond>57)||(cFirst==39)||(cFirst==40&&cSecond<=26))
strResult="Q";
if(cFirst==40&&cSecond>26&&cSecond<=85)
strResult="R";
if((cFirst==40&&cSecond>85)||(cFirst==41)||(cFirst==42)||(cFirst==43&&cSecond<=89))
strResult="S";
if((cFirst==43&&cSecond>89)||(cFirst==44)||(cFirst==45&&cSecond<=57))
strResult="T";
if((cFirst==45&&cSecond>57)||(cFirst==46&&cSecond<=83))
strResult="W";
if((cFirst==46&&cSecond>83)||(cFirst==47)||(cFirst==48)||(cFirst==49&&cSecond<=24))
strResult="X";
if((cFirst==49&&cSecond>24)||(cFirst==50)||(cFirst==51)||(cFirst==52&&cSecond<=48))
strResult="Y";
if((cFirst==52&&cSecond>48)||(cFirst==53)||(cFirst==54)||(cFirst==55&&cSecond<=89))
strResult="Z";
if(cFirst<16||cFirst>55)
strResult="*";
}
else
{
strResult="*";
}
return strResult.AllocSysString();
}
{
HKL hkl[100];
char buf[255];
LRESULT iMaxKey; // 获得本机安装的输入法列表
int n = GetKeyboardLayoutList(100, hkl); // array of input locale identifiers for(int ii = 0; ii < n; ii++)
{
// 获得输入法的名字
if(ImmEscape(hkl[ii], 0, IME_ESC_IME_NAME, buf) <= 0) continue; iMaxKey = ImmEscape(hkl[ii], 0, IME_ESC_MAX_KEY, NULL);
if(iMaxKey <= 0) continue; // 看看这个输入法是否支持Reverse Conversion功能,
// 同时侦测需要多大的空间容纳取得的信息
DWORD dwGCL = ImmGetConversionList(hkl[ii], 0, strIn,
NULL, 0, GCL_REVERSECONVERSION);
if(dwGCL <= 0) continue; // 该输入法不支持Reverse Conversion功能 // 取得组字字根信息, dwGCL的值必须用上次调用
// ImmGetConversionList得到的返回值作为参数
dwGCL += sizeof(CANDIDATELIST);
dwGCL = ImmGetConversionList(hkl[ii], 0, strIn,
(CANDIDATELIST*)buf, dwGCL, GCL_REVERSECONVERSION);
if(dwGCL > 0) break;
}
if(ii == n) return 0;
if(nLen < iMaxKey + 2) return -(iMaxKey * 2); int nOff = buf[24];
for(int j = nOff; j < nOff + iMaxKey * 2; j++)
{
bufOut[j - nOff] = buf[j];
} return iMaxKey * 2;
}int main(int argc, char* argv[])
{
char buf[100];
memset(buf, 0, 100);
HanziToPinyin("小明", buf, 100);
printf("%s\n", buf);
return 0;
}输出:
xiao3 ming2好像要求必须安装微软拼音输入法,另外输出的3,2我也不知道是什么意思
3、2 代表声调分别是三声和二声。