ADDORDEL.CPP
上传用户:zhang8947
上传日期:2007-01-08
资源大小:1910k
文件大小:4k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. // addordel.cpp : implementation file
  2. //
  3. #include "stdafx.h"                            
  4. #include <afxdlgs.h>
  5. #include "resource.h"
  6. #include "addordel.h"
  7. #include "iniinput.h"
  8. //#include "inputlib.h"
  9. extern CInputInit OInputInit ; //输入环境初始化对象
  10. #ifdef _DEBUG
  11. #undef THIS_FILE
  12. static char BASED_CODE THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CAddOrDelInputMethod dialog
  16. CAddOrDelInputMethod::CAddOrDelInputMethod(void)
  17. : CPropertyPage(CAddOrDelInputMethod::IDD)
  18. {
  19. //{{AFX_DATA_INIT(CAddOrDelInputMethod)
  20. // NOTE: the ClassWizard will add member initialization here
  21. //}}AFX_DATA_INIT
  22. }
  23. void CAddOrDelInputMethod::DoDataExchange(CDataExchange* pDX)
  24. {
  25. CPropertyPage::DoDataExchange(pDX);
  26. //{{AFX_DATA_MAP(CAddOrDelInputMethod)
  27. DDX_Control(pDX, IDC_LIST1, m_AddedInputMethods);
  28. //}}AFX_DATA_MAP
  29. }
  30. BEGIN_MESSAGE_MAP(CAddOrDelInputMethod, CPropertyPage )
  31. //{{AFX_MSG_MAP(CAddOrDelInputMethod)
  32. ON_BN_CLICKED(ID_INSTALL, OnInstall)
  33. ON_LBN_DBLCLK(IDC_LIST1, OnDblclkList1)
  34. ON_BN_CLICKED(ID_DELETE, OnDelete)
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CAddOrDelInputMethod message handlers
  39. void CAddOrDelInputMethod::OnInstall()
  40. {
  41. CFileDialog fileDialog( TRUE , "txt" , "*.txt" ,
  42. OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT ,
  43. "UCDOS输入法(*.txt)|*.txt|梦笔生花输入法(*.iml)|*.iml| All Files (*.*) | *.* ||"
  44. ) ;
  45. if( fileDialog.DoModal() == IDOK )
  46. {
  47. //得到文件后缀
  48. CString fileExt =fileDialog.GetFileExt() ;
  49. if( fileExt != "TXT" && fileExt != "IML" )
  50. AfxMessageBox( "文件类型不对,必须是.txt或.iml文件!" ,
  51. MB_OK|MB_ICONINFORMATION ) ;
  52. else
  53. {
  54. //增加一种输入法
  55. CString path =fileDialog.GetPathName() ;
  56. //判断文件类型
  57. if( fileExt == "TXT" ) //是UCDOS文本文件
  58. {
  59. if( !TranslateUcdos( path ) ) //转换失败
  60. return ;
  61.            
  62. ::MessageBox( this->m_hWnd , "输入法文件转换成功" ,
  63. "转换输入法" , 
  64. MB_OK|MB_ICONEXCLAMATION ) ;
  65. //重新组织文件名,组织库文件名
  66. path =path.Left( path.GetLength()-3 ) ; //去掉TXT后缀
  67. path +="iml" ; //新后缀
  68. }
  69. //关闭以前的输入法
  70. UnloadInputLib() ;
  71. //安装该输入法
  72. if( !LoadInputLib( path ) )
  73. return ;
  74. //得到输入法名
  75. char sName[20] ;
  76. GetInputMethodName( sName , 20 ) ;
  77. char sBuff[100] ;
  78. wsprintf( sBuff , "%s输入法安装成功!" , sName ) ;
  79. ::MessageBox( this->m_hWnd , sBuff , "安装输入法" , 
  80. MB_OK|MB_ICONEXCLAMATION ) ;
  81. //将输入法加入列表框
  82. m_AddedInputMethods.InsertString( 0 , sName ) ;
  83. //将输入法加入INI文件和菜单
  84. OInputInit.AddInputMethod( sName , path ) ;
  85. }  
  86. }
  87. }
  88. void CAddOrDelInputMethod::OnDblclkList1()
  89. {
  90. DeleteInputMethod() ;
  91. }
  92. void CAddOrDelInputMethod::OnDelete()
  93. {
  94. DeleteInputMethod() ;
  95. }
  96. void CAddOrDelInputMethod::DeleteInputMethod( void )
  97. {
  98. int nSelectItem =m_AddedInputMethods.GetCurSel() ;
  99. if( nSelectItem == LB_ERR ) //没有选择
  100. return ;
  101. CDialog dialog( IDD_DIALOG4 ) ;
  102. if( dialog.DoModal() == IDOK ) 
  103. {
  104. //将其从列表框中删除
  105. m_AddedInputMethods.DeleteString( nSelectItem ) ;
  106. //将其从INI文件和菜单中删除
  107. OInputInit.DeleteInputMethod( nSelectItem ) ;
  108. }
  109. }
  110. //对输入法列表框进行初始化
  111. BOOL CAddOrDelInputMethod::OnInitDialog()
  112. {
  113. CPropertyPage ::OnInitDialog();
  114. //得到输入法数
  115. int nMethodNum =OInputInit.GetInputMethodNum() ;
  116. char sInputName[100] ; //输入法名称
  117. char sInputFileName[100] ; //输入法文件名
  118.                
  119. for( int i=1 ; i<nMethodNum ; i++ )
  120. {
  121. //得到输入法的名字与文件名
  122. OInputInit.GetInputMethod( i , sInputName , 100 ,
  123. sInputFileName , 100 ) ;
  124. //将输入法名加入列表框
  125. m_AddedInputMethods.InsertString( 0 , sInputName ) ;
  126. }
  127. return TRUE ;
  128. }