1. 程式人生 > >用VC++6.0程式設計實現漢字拼音查詢

用VC++6.0程式設計實現漢字拼音查詢

{
 4    m_List1.ResetContent();
 5    UpdateData();
 6    m_Edit1.TrimLeft();
 7    m_Edit1.TrimRight();
 8    if(m_Edit1.IsEmpty())    return;
 9    UINT i;
10    unsigned char ch;
11    for(int j=0; j<m_Edit1.GetLength(); j++)
12    {
13        ch = m_Edit1.GetAt(j);    // 漢字串中的第 i 個字元
14        // 判斷漢字是否合法15if
( (((j+2)%2==0&& ch<0xA1|| (((j+2)%2)==1&& ch<0x40) )
16        {
17            MessageBox("輸入了非法的字元!", NULL, MB_ICONWARNING);
18            return;
19        }
20    }
21
22    HRSRC HGBSrc;
23    LPVOID GBTemp;
24    // 查詢對應表資源25    HGBSrc = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_PYGBK1),
"PYGBK");
26    if(HGBSrc == NULL)    return;
27    // 得到對應表資料的大小28    DWORD size = SizeofResource(AfxGetInstanceHandle(), HGBSrc);
29    // 裝入對應表30    HGLOBAL m_HGBStr = LoadResource(AfxGetInstanceHandle(), HGBSrc);
31    // 鎖定資源並得到資料指標32    GBTemp = LockResource(m_HGBStr);
33    // 轉換為 char 型別的指標34char*buf = (char
*)GBTemp;
35
36    char hzstr[21], ss[50];
37    strcpy(hzstr, m_Edit1);
38    for(i=0; i<10; i++)    arPY[i][0]=0;
39    // 呼叫查詢拼音的函式40this->SearchHZPY(buf, size, hzstr);
41    // 在列表框中顯示結果42for(i=0; i<strlen(hzstr)/2; i++)
43    {
44        sprintf(ss, "%c%c - %s", hzstr[i*2], hzstr[i*2+1], arPY[i]);
45        m_List1.AddString(ss);
46    }
47}