AppDict.cpp
上传用户:hyb6888
上传日期:2016-01-24
资源大小:5186k
文件大小:4k
源码类别:

输入法编程

开发平台:

Visual C++

  1. // AppDict.cpp: implementation of the AppDict class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "AppDict.h"
  6. #include "windows.h"
  7. #include "stdio.h"
  8. #include "resource.h"
  9. #include "DllManager.h"
  10. extern DllManager ChLib;//定义在主DLL中
  11. char NewChina[1000];
  12. char NewCode[1000];
  13. extern HWND ActiveHwnd;
  14. //////////////////////////////////////////////////////////////////////
  15. // Construction/Destruction
  16. //////////////////////////////////////////////////////////////////////
  17. BOOL WINAPI AppendWord(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam )
  18. {
  19. switch (message)
  20. {
  21. case WM_INITDIALOG:
  22. SetDlgItemText(hDlg,IDC_EDIT1,NewChina);
  23. SetDlgItemText(hDlg,IDC_EDIT2,NewCode);
  24. SetWindowPos(hDlg, 0, 200,200,0, 0, 21); //SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER  //16/1/4
  25. return TRUE;
  26. case WM_COMMAND:
  27. switch(wParam) {
  28. case IDOK:
  29. GetDlgItemText(hDlg,IDC_EDIT1,NewChina,1000);
  30. GetDlgItemText(hDlg,IDC_EDIT2,NewCode,100);
  31. //MessageBox(NULL,NewChina,NewCode,MB_OK);
  32. EndDialog(hDlg,IDOK);
  33. break;
  34. case IDCANCEL:
  35. EndDialog(hDlg,IDCANCEL);
  36. break;
  37. default:
  38. break;
  39. }
  40. break;
  41. }
  42.     return FALSE;
  43. }
  44. AppDict::AppDict()
  45. {
  46.     ChiSS[0]=0;
  47. appdictbool=0;
  48. }
  49. int AppDict::AppOne(char *pChi)
  50. {
  51.    strcat(ChiSS,pChi);
  52.    return 0;
  53. }
  54. int AppDict::AppSetDict(DWORD himc)
  55. {
  56. int ret;
  57. LPINPUTCONTEXT lpIMC;
  58. char temss[2000]="";
  59. char path[100]="c:\jsime\";
  60. if (!(lpIMC = ImmLockIMC(himc)))
  61.         return 0L;
  62. if(appdictbool==0){
  63. appdictbool=1;
  64. ChiSS[0]=0;
  65. ret=0;
  66. }
  67. else
  68.  appdictbool=0;
  69. if(ChiSS[0]==0)
  70. {
  71.     //WriteReg("ChiCodeEnd",ChiSS);
  72.         WinExec("c:\jsime\词语管理.exe ShowMessageBox",1);
  73.     //MessageBox(0,mydd.EnCodeEnd,mydd.ChiCodeEnd,0);
  74. }
  75. else
  76. {
  77. ChLib.ChissToCodeC("c:\jsime\MainCode.txt", ChiSS, temss);
  78. strcpy(NewCode,temss);
  79. strcpy(NewChina,ChiSS);
  80. ret=DialogBox(ChLib.hInstance,MAKEINTRESOURCE(IDD_AppendWordDIALOG1),lpIMC->hWnd,AppendWord);
  81. strcpy(temss,NewCode);
  82. strcpy(ChiSS,NewChina);
  83. if(ret==IDOK)
  84. {
  85. FILE  *infp; 
  86. char ss[2000];
  87. ChLib.insertNewWord(temss,ChiSS);
  88.     infp=fopen("c:\jsime\userSource.txt", "a");   //打开文字文件 
  89. if(infp==NULL){
  90.     MessageBox(0,"c:\jsime\userSource.txt装载失败","fopen",0);
  91.     return -1;
  92. }
  93. sprintf(ss,"xdxa%s %s",temss,ChiSS);
  94. fwrite(ss,strlen(ss),1,infp); 
  95. fclose(infp);
  96. WriteReg("jsime",1);
  97. }
  98. }
  99. ret=1;
  100. }
  101. ImmUnlockIMC(himc);
  102.  return ret;
  103. }
  104. ////////////////////////////////////////////////////////////////////
  105. //
  106. int AppDict::WriteReg(char *valname,char *keyVal)
  107. {
  108. HKEY hKey;
  109. if ( RegCreateKey(HKEY_CURRENT_USER,"Software\jsime", &hKey) == ERROR_SUCCESS )
  110. {
  111.  //   MessageBox(0,valname,keyVal,0);
  112.   RegSetValueEx(hKey, valname,0,REG_MULTI_SZ,(LPBYTE)keyVal,strlen(keyVal));
  113. RegCloseKey(hKey);
  114. }
  115. return 0;
  116. }
  117. int AppDict::WriteReg(char *valname,DWORD keyVal)
  118. {
  119. HKEY hKey;
  120. if ( RegCreateKey(HKEY_CURRENT_USER,"Software\jsime", &hKey) == ERROR_SUCCESS )
  121. {
  122.  //   MessageBox(0,valname,keyVal,0);
  123.   RegSetValueEx(hKey, valname,0,REG_DWORD,(LPBYTE)&keyVal,sizeof(DWORD));
  124. RegCloseKey(hKey);
  125. }
  126. return 0;
  127. }
  128. //读取注册表中的一个变量
  129. DWORD AppDict::mmReadReg(char *valname)
  130. {
  131. HKEY hKey;
  132. DWORD myupdate, myupdate1;
  133. unsigned long lon;
  134. myupdate=0;
  135. myupdate1=0;
  136. if ( RegCreateKey(HKEY_CURRENT_USER,"Software\jsime", &hKey) == ERROR_SUCCESS )
  137. {
  138. //如果没有键值就建立一个
  139. if( RegQueryValueEx( hKey,valname,NULL,NULL,(LPBYTE)&myupdate1,&lon) != ERROR_SUCCESS )
  140. {
  141.   RegSetValueEx(hKey, valname,0,REG_DWORD,(LPBYTE)&myupdate,sizeof(DWORD));
  142. }
  143. RegCloseKey(hKey);
  144. }
  145. return myupdate1;
  146. }