⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carddlg.cpp

📁 The ITU-T(Telecommunication Standardization Sector)is a permanent organ of the International Telecom
💻 CPP
字号:
// CardDlg.cpp : implementation file
//

#include "stdafx.h"
#include "WordRecPDA.h"
#include "CardDlg.h"
#include "..\\CommandEngine.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CCardDlg dialog


CCardDlg::CCardDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCardDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCardDlg)
	m_strName = _T("");
	m_bUpdateBook = FALSE;
	m_bTestBatch = FALSE;
	m_strPinyin = _T("");
	//}}AFX_DATA_INIT
}


void CCardDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCardDlg)
	DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
	DDV_MaxChars(pDX, m_strName, 11);
	DDX_Text(pDX, IDC_EDIT_INFO, m_strPinyin);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCardDlg, CDialog)
	//{{AFX_MSG_MAP(CCardDlg)
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
	ON_BN_CLICKED(IDC_BUTTON_BATCH, OnButtonBatch)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCardDlg message handlers

void CCardDlg::OnButtonAdd() 
{
	CString strMsg;
	UpdateData(TRUE);
	char strName[MAX_PATH], strPiny[MAX_PATH];
	strcpy(strName, m_strName);
	strcpy(strPiny, m_strPinyin);
	if (strlen(strName) == 0) return;
	else if (strlen(strName) > MAX_WORD_LENGTH*2){
		strMsg.Format("名字不能超过%d个字!", MAX_WORD_LENGTH);
		AfxMessageBox(strMsg);
		return;
	}
	for (unsigned int i=0; i < strlen(strName); i++){
		if (strName[i] >= 0){
			AfxMessageBox("请输入中文字符!", MB_OK, 0);
			return;
		}
	}

	//自动注音
	//if (SrAddWord(strName, NULL) == 0) {
	//	AfxMessageBox("OK");
	//	m_bUpdateBook = true;
	//}
	//else
	//	AfxMessageBox("Failed");
	
	//半自动注音	
	char* strPinyin[MAX_WORD_LENGTH];
	for (i=0; i < MAX_WORD_LENGTH; i++) {
		strPinyin[i] = new char[7];
		strcpy(strPinyin[i], "");
	}
	if (strcmp(strPiny, "") == 0) {
		if (SrAddWord(strName, strPinyin) == 0) {
			m_strPinyin = "\0";
			for (i=0; i < strlen(strName)/2; i++) {
				m_strPinyin += strPinyin[i];
				m_strPinyin += "  ";
			}
			UpdateData(FALSE);
		}
	}
	else {
		strcpy(strPiny, m_strPinyin);
		i = 0;
		char * pStr = strtok(strPiny, " \t\n");
		while (pStr != NULL && i < MAX_WORD_LENGTH)
		{
			if (strlen(pStr) <= 7)
				strcpy(strPinyin[i], pStr);
			else
				strcpy(strPinyin[i], " ");
			pStr = strtok(NULL, " \t\n");
			i++;
		}
		if (SrAddWord(strName, strPinyin) == 0) {
			AfxMessageBox("已加入!");
			m_bUpdateBook = TRUE;
		}
		else
			AfxMessageBox("加词失败!");
		m_strName = "";
		m_strPinyin = "";
		UpdateData(FALSE);
	}
	for (i=0; i < MAX_WORD_LENGTH; i++)
		delete [] strPinyin[i];
}

void CCardDlg::OnButtonDelete() 
{
	char strMsg[MAX_PATH];
	UpdateData();
	char* strName = m_strName.GetBuffer(20);
	if( strlen(strName) == 0 ) 
		return;
	else if( strlen(strName) > MAX_WORD_LENGTH*2)
	{
		sprintf(strMsg, "名字不能超过%d个字!", MAX_WORD_LENGTH);
		AfxMessageBox( strMsg );
		return;
	}

	char csMessage[30];
	sprintf(csMessage, "您确认要删除吗?"); 
	if( AfxMessageBox(csMessage, MB_ICONEXCLAMATION  || MB_ICONWARNING )
		== IDOK ){
		if (SrDeleteWord(strName) == 0)
			AfxMessageBox("OK");
		else
			AfxMessageBox("Failed");
		m_bUpdateBook = true;
	}
	m_strName.ReleaseBuffer(20);	
}

int CCardDlg::DoModal() 
{
	m_bUpdateBook = FALSE;
	SrConvertInit();
	int ret =  CDialog::DoModal();
	SrConvertExit();
	return ret;
}

void CCardDlg::OnButtonBatch() 
{
	char strSourceFile[MAX_PATH], strMsg[MAX_PATH];
	char strCommandSetName[] = "CMDST_COMMAND";
	CFileDialog oFileDlg(TRUE, "txt", "*.txt");
	if (oFileDlg.DoModal() != IDOK) return;
	CString str = oFileDlg.GetPathName();
	strcpy(strSourceFile, str.GetBuffer(MAX_PATH));

	int ret = SrNewCommandSet(strSourceFile, strCommandSetName);
	if (ret == 0) {
		sprintf(strMsg, "New %s has been generated!", strCommandSetName);
		AfxMessageBox(strMsg);
	}
	m_bTestBatch = true;

/*	FILE * fp = fopen(strSourceFile, "rt");
	if (fp)
	{
		char strTmp[260];
		fgets(strTmp, 260, fp);
		int nWrd = atoi(strTmp);
		char ** strWrds = new char*[nWrd];
		char ** strPinyin = new char*[nWrd];
		for (int i=0; i < nWrd; i++)
		{
			strWrds[i] = new char[MAX_WORD_LENGTH*2+1];
			fgets(strTmp, 260, fp);
			strcpy(strWrds[i], strtok(strTmp, " \t\n"));
			char * pStr;
			pStr = strtok(NULL, "\n");
			if (pStr == NULL)
				strPinyin[i] = NULL;
			else
			{
				strPinyin[i] = new char[(MAX_WORD_LENGTH+1)*7];
				strcpy(strPinyin[i], pStr);
			}
		}
		int * pWrongIdx = new int[nWrd];
		//int ret = SrGenerateLextree(strWrds, nWrd, strCommandSetName);
		int ret = SrGenerateLextree(strWrds, nWrd, strCommandSetName, strPinyin, pWrongIdx);
		if (ret == 0) {
			sprintf(strMsg, "New %s has been generated!", strCommandSetName);
			AfxMessageBox(strMsg);
		}
		delete [] pWrongIdx;
		for (i=0; i < nWrd; i++)
			delete [] strPinyin[i];
		delete [] strPinyin;
		for (i=0; i < nWrd; i++)
			delete [] strWrds[i];
		delete [] strWrds;
	}
	fclose(fp);
*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -