请问可以这样定义分块查找中的索引表吗,如果不行的话,该咋办?
#define MAX_EACH_PY_NUM 41
typedef struct { '创建索引表
WORD wKey;
TCHAR szPY[8];
TCHAR hzcftab[8];
TCHAR jxmtab[8];
TCHAR hzctab[10];
TCHAR pytab[8];
TCHAR pywbtab[80]; } PINYIN,FAR *LPPINYIN;
PINYIN aPYTab[26][MAX_EACH_PY_NUM] = {0};void LoadHZDictionary( LPTSTR lpStr)
{
TCHAR szPY[20],szHZ[2],szJXM[8],szFPY[8],szFF[8];
static int i=0,j=0,nPre=0;
WORD wPYHead=1;
LPPINYIN lpPYTab = (LPPINYIN)aPYTab; _stscanf(lpStr,"%s %s %s %s %s",szHZ,szPY,szFPY,szJXM,szFF);
//MessageBox(NULL,szJXM,"szJXM",MB_OK);
wPYHead=(WORD)szPY[0] - (WORD)_T('a');
if(wPYHead != nPre)
j=0;
_tcscpy((lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->szPY,szPY);
_tcscpy((lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->jxmtab,szJXM);
_tcscpy((lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->hzctab,szHZ);
MessageBox(NULL,(lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->szPY,"lpPYTab",MB_OK);
MessageBox(NULL,(lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->jxmtab,"jxmtab",MB_OK);
MessageBox(NULL,(lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->hzctab,"hzctab",MB_OK); (lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->wKey=i+1;
nPre=wPYHead;
i++,j++;
return; }
#define MAX_EACH_PY_NUM 41
typedef struct { '创建索引表
WORD wKey;
TCHAR szPY[8];
TCHAR hzcftab[8];
TCHAR jxmtab[8];
TCHAR hzctab[10];
TCHAR pytab[8];
TCHAR pywbtab[80]; } PINYIN,FAR *LPPINYIN;
PINYIN aPYTab[26][MAX_EACH_PY_NUM] = {0};void LoadHZDictionary( LPTSTR lpStr)
{
TCHAR szPY[20],szHZ[2],szJXM[8],szFPY[8],szFF[8];
static int i=0,j=0,nPre=0;
WORD wPYHead=1;
LPPINYIN lpPYTab = (LPPINYIN)aPYTab; _stscanf(lpStr,"%s %s %s %s %s",szHZ,szPY,szFPY,szJXM,szFF);
//MessageBox(NULL,szJXM,"szJXM",MB_OK);
wPYHead=(WORD)szPY[0] - (WORD)_T('a');
if(wPYHead != nPre)
j=0;
_tcscpy((lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->szPY,szPY);
_tcscpy((lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->jxmtab,szJXM);
_tcscpy((lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->hzctab,szHZ);
MessageBox(NULL,(lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->szPY,"lpPYTab",MB_OK);
MessageBox(NULL,(lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->jxmtab,"jxmtab",MB_OK);
MessageBox(NULL,(lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->hzctab,"hzctab",MB_OK); (lpPYTab+wPYHead*MAX_EACH_PY_NUM+j)->wKey=i+1;
nPre=wPYHead;
i++,j++;
return; }
解决方案 »
- 急!上位机软件设计—监控部分
- 我想让鼠标移动引起窗口重绘,遇到了这个问题。谢谢各位~
- 一个简单的多线程程序,在单核电脑上运行没有问题,但是在双核电脑上运行就会有问题,请大侠指点一下!
- ADO删除记录问题
- 应用程序是如何退出的???????????
- 如何阻止文档视图程序运行时自动新建文档
- CFileDialog能不能打开网上邻居的共享目录??或者有其他办法实现打开局域网的共享目录呢?
- 一如既往:VC/MFC 5月份专家榜
- 怎么定义全局变量
- SubClassDlgItem(...) 是个什么东东??
- 心爱的MM陪她男朋友出去完了 平安夜自己一个人在写程序 什么都不说了 兄弟们进来领分吧!!!!!!!!!!!!!!!!!!!!!!!
- E-mail中的Internet报文存取协议IMAP与POP3协议的差别主要表现在哪几个方面?
如何在VB中控制输入法切换和检测输入法状态编号:QA001261
建立日期: 1999年6月30日 最后修改日期:2000年1月2日
所属类别: Visual Basic - 其他方面 宋海龙:
VB5
WIN95
请告诉我如何在VB中有效地控制中英文输入法的切换和和当前输入法状态的检测。谢谢! 回答: VB有一个函数IMEStatus()用来检测当前输入法状态。一些控件,如TextBox,包括属性IMEMode。详细的用法可以参考IMEStatus()的说明。下面这个小例子就是禁止用户在切换到Text1时自动关闭中文输入法。
Private Sub Text1_GotFocus()
Text1.IMEMode = vbIMEOff
End Sub
但是,VB有关输入法的控制比较有限,当用户切换状态时没有相应的事件,而且不能指定输入法。你要指定输入法,需要利用API函数ActivateKeyboardLayout,详见QA002371 "汉字输入法类控件在VFP下的实现及应用"。
可以返回当前输入法的KeyboardlayoutName,所以 ... 输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到 ...