www.pudn.com > 智能内码识别,支持屏幕取词翻译的程序.zip > ADDORDEL.CPP


// addordel.cpp : implementation file 
// 
 
#include "stdafx.h"                             
#include	 
#include	"resource.h" 
#include "addordel.h" 
#include	"iniinput.h" 
//#include	"inputlib.h" 
 
extern	CInputInit	OInputInit ;	//输入环境初始化对象 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char BASED_CODE THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CAddOrDelInputMethod dialog 
 
 
CAddOrDelInputMethod::CAddOrDelInputMethod(void) 
	: CPropertyPage(CAddOrDelInputMethod::IDD) 
{ 
	//{{AFX_DATA_INIT(CAddOrDelInputMethod) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
void CAddOrDelInputMethod::DoDataExchange(CDataExchange* pDX) 
{ 
	CPropertyPage::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CAddOrDelInputMethod) 
	DDX_Control(pDX, IDC_LIST1, m_AddedInputMethods); 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CAddOrDelInputMethod, CPropertyPage ) 
	//{{AFX_MSG_MAP(CAddOrDelInputMethod) 
	ON_BN_CLICKED(ID_INSTALL, OnInstall) 
	ON_LBN_DBLCLK(IDC_LIST1, OnDblclkList1) 
	ON_BN_CLICKED(ID_DELETE, OnDelete) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CAddOrDelInputMethod message handlers 
 
void CAddOrDelInputMethod::OnInstall() 
{ 
	CFileDialog	fileDialog( TRUE , "txt" , "*.txt" , 
					OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT , 
					"UCDOS输入法(*.txt)|*.txt|梦笔生花输入法(*.iml)|*.iml| All Files (*.*) | *.* ||" 
					) ; 
	if( fileDialog.DoModal() == IDOK ) 
	{ 
		//得到文件后缀 
		CString	fileExt	=fileDialog.GetFileExt() ; 
		if( fileExt != "TXT" && fileExt != "IML" ) 
			AfxMessageBox( "文件类型不对,必须是.txt或.iml文件!" , 
						MB_OK|MB_ICONINFORMATION ) ; 
		else 
		{ 
			//增加一种输入法 
			CString	path	=fileDialog.GetPathName() ; 
			//判断文件类型 
			if( fileExt == "TXT" )		//是UCDOS文本文件 
			{ 
				if( !TranslateUcdos( path ) )		//转换失败 
					return ; 
					            
				::MessageBox( this->m_hWnd , "输入法文件转换成功" , 
											"转换输入法" ,  
											MB_OK|MB_ICONEXCLAMATION ) ; 
 
				//重新组织文件名,组织库文件名 
				path	=path.Left( path.GetLength()-3 ) ;	//去掉TXT后缀 
				path	+="iml" ;		//新后缀 
			} 
			 
			//关闭以前的输入法 
			UnloadInputLib() ; 
			//安装该输入法 
			if( !LoadInputLib( path ) ) 
				return ; 
			 
			//得到输入法名 
			char	sName[20] ; 
			GetInputMethodName( sName , 20 ) ; 
			char	sBuff[100] ; 
			wsprintf( sBuff , "%s输入法安装成功!" , sName ) ; 
			::MessageBox( this->m_hWnd , sBuff , "安装输入法" ,  
										MB_OK|MB_ICONEXCLAMATION ) ; 
			 
			//将输入法加入列表框 
			m_AddedInputMethods.InsertString( 0 , sName ) ; 
			//将输入法加入INI文件和菜单 
			OInputInit.AddInputMethod( sName , path ) ; 
		}   
	}			 
} 
 
void CAddOrDelInputMethod::OnDblclkList1() 
{ 
	DeleteInputMethod() ; 
} 
 
void CAddOrDelInputMethod::OnDelete() 
{ 
	DeleteInputMethod() ;	 
} 
 
void	CAddOrDelInputMethod::DeleteInputMethod( void ) 
{ 
	int	nSelectItem	=m_AddedInputMethods.GetCurSel() ; 
	if( nSelectItem == LB_ERR )		//没有选择 
		return ; 
		 
	CDialog	dialog( IDD_DIALOG4 ) ; 
	if( dialog.DoModal() == IDOK ) 		 
	{ 
		//将其从列表框中删除 
		m_AddedInputMethods.DeleteString( nSelectItem ) ; 
		//将其从INI文件和菜单中删除 
		OInputInit.DeleteInputMethod( nSelectItem ) ; 
	} 
} 
 
//对输入法列表框进行初始化 
BOOL CAddOrDelInputMethod::OnInitDialog() 
{ 
	CPropertyPage ::OnInitDialog(); 
 
	//得到输入法数 
	int		nMethodNum	=OInputInit.GetInputMethodNum() ; 
	char	sInputName[100] ;			//输入法名称 
	char	sInputFileName[100] ;		//输入法文件名 
                
	for( int i=1 ; i