?? cpropcomkeyword.cpp
字號:
case WM_TIMER:
nIndex1 = ListView_GetNextItem( hwndLIST_KEYWORD, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex1 ){
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EDITKEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELKEYWORD ), FALSE );
}else{
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EDITKEYWORD ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELKEYWORD ), TRUE );
}
break;
case WM_DESTROY:
::KillTimer( hwndDlg, 1 );
break;
//@@@ 2001.02.04 Start by MIK: Popup Help
case WM_HELP:
{
HELPINFO *p = (HELPINFO *)lParam;
::WinHelp( (HWND)p->hItemHandle, m_szHelpFile, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids );
}
return TRUE;
/*NOTREACHED*/
//break;
//@@@ 2001.02.04 End
//@@@ 2001.12.22 Start by MIK: Context Menu Help
//Context Menu
case WM_CONTEXTMENU:
::WinHelp( hwndDlg, m_szHelpFile, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids );
return TRUE;
//@@@ 2001.12.22 End
}
return FALSE;
}
/* p7:リスト中で選択されているキーワードを編集する */
void CPropCommon::p7_Edit_List_KeyWord( HWND hwndDlg, HWND hwndLIST_KEYWORD )
{
int nIndex1;
LV_ITEM lvi;
char szKeyWord[MAX_KEYWORDLEN + 1];
CDlgInput1 cDlgInput1;
nIndex1 = ListView_GetNextItem( hwndLIST_KEYWORD, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex1 ){
return;
}
lvi.mask = LVIF_PARAM;
lvi.iItem = nIndex1;
lvi.iSubItem = 0;
ListView_GetItem( hwndLIST_KEYWORD, &lvi );
/* n番目のセットのm番目のキーワードを返す */
strcpy( szKeyWord, m_CKeyWordSetMgr.GetKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, lvi.lParam ) );
/* モードレスダイアログの表示 */
if( FALSE == cDlgInput1.DoModal( m_hInstance, hwndDlg, "キーワード編集", "キーワードを編集してください。", MAX_KEYWORDLEN, szKeyWord ) ){
return;
}
if( 0 < strlen( szKeyWord ) ){
/* n番目のセットにキーワードを編集 */
m_CKeyWordSetMgr.UpdateKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, lvi.lParam, szKeyWord );
}else{
/* n番目のセットのm番目のキーワードを削除 */
m_CKeyWordSetMgr.DelKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, lvi.lParam );
}
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
SetData_p7_KeyWordSet( hwndDlg, m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
ListView_SetItemState( hwndLIST_KEYWORD, nIndex1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
return;
}
/* p7:リスト中で選択されているキーワードを削除する */
void CPropCommon::p7_Delete_List_KeyWord( HWND hwndDlg, HWND hwndLIST_KEYWORD )
{
int nIndex1;
LV_ITEM lvi;
nIndex1 = ListView_GetNextItem( hwndLIST_KEYWORD, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex1 ){
return;
}
lvi.mask = LVIF_PARAM;
lvi.iItem = nIndex1;
lvi.iSubItem = 0;
ListView_GetItem( hwndLIST_KEYWORD, &lvi );
/* n番目のセットのm番目のキーワードを削除 */
m_CKeyWordSetMgr.DelKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, lvi.lParam );
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
SetData_p7_KeyWordSet( hwndDlg, m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
ListView_SetItemState( hwndLIST_KEYWORD, nIndex1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
//キーワード數を表示する。
DispKeywordCount( hwndDlg );
return;
}
/* p7:リスト中のキーワードをインポートする */
void CPropCommon::p7_Import_List_KeyWord( HWND hwndDlg, HWND hwndLIST_KEYWORD )
{
// ::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONINFORMATION, GSTR_APPNAME,
// "ファイルから単語をインポートする機能は、まだ完成していないのです。\n"
// );
// return;
CDlgOpenFile cDlgOpenFile;
char szPath[_MAX_PATH + 1];
FILE* pFile;
char szLine[1024];
int i;
bool bAddError = false;
strcpy( szPath, "" );
/* ファイルオープンダイアログの初期化 */
cDlgOpenFile.Create(
m_hInstance,
hwndDlg,
"*.kwd",
szPath
);
if( !cDlgOpenFile.DoModal_GetOpenFileName( szPath ) ){
return;
}
pFile = fopen( szPath, "r" );
if( NULL == pFile ){
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME,
"ファイルを開けませんでした。\n\n%s", szPath
);
return;
}
while( NULL != fgets( szLine, sizeof(szLine), pFile ) ){
// MYTRACE( szLine );
if( 2 < strlen( szLine ) && 0 == memcmp( szLine, "//", 2 ) ){
}else{
if( 0 < (int)strlen( szLine ) ){
for( i = 0; i < (int)strlen( szLine ); ++i ){
if( szLine[i] == '\r' || szLine[i] == '\n' ){
szLine[i] = '\0';
}
}
}
if( 0 < (int)strlen( szLine ) ){
/* n番目のセットにキーワードを追加 */
int nRetValue = m_CKeyWordSetMgr.AddKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, szLine );
if( 2 == nRetValue ){
bAddError = true;
break;
}
}
}
}
fclose( pFile );
if( bAddError ){
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME,
"キーワードの數が上限に達したため、いくつかのキーワードを追加できませんでした。"
);
}
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
SetData_p7_KeyWordSet( hwndDlg, m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
return;
}
/* p7:リスト中のキーワードをエクスポートする */
void CPropCommon::p7_Export_List_KeyWord( HWND hwndDlg, HWND hwndLIST_KEYWORD )
{
// ::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONINFORMATION, GSTR_APPNAME,
// "単語をファイルへエクスポートする機能は、まだ完成していないのです。\n"
// );
CDlgOpenFile cDlgOpenFile;
char szPath[_MAX_PATH + 1];
FILE* pFile;
// char szLine[1024];
int i;
int nKeyWordNum;
strcpy( szPath, "" );
/* ファイルオープンダイアログの初期化 */
cDlgOpenFile.Create(
m_hInstance,
hwndDlg,
"*.kwd",
szPath
);
if( !cDlgOpenFile.DoModal_GetSaveFileName( szPath ) ){
return;
}
// MYTRACE( "%s\n", szPath );
pFile = fopen( szPath, "w" );
if( NULL == pFile ){
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME,
"ファイルを開けませんでした。\n\n%s", szPath
);
return;
}
fputs( "// ", pFile );
fputs( m_CKeyWordSetMgr.GetTypeName( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ), pFile );
fputs( " キーワード定義ファイル", pFile );
fputs( "\n", pFile );
fputs( "\n", pFile );
m_CKeyWordSetMgr.SortKeyWord(m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx); //MIK 2000.12.01 sort keyword
/* n番目のセットのキーワードの數を返す */
nKeyWordNum = m_CKeyWordSetMgr.GetKeyWordNum( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
for( i = 0; i < nKeyWordNum; ++i ){
/* n番目のセットのm番目のキーワードを返す */
m_CKeyWordSetMgr.GetKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, i );
fputs( m_CKeyWordSetMgr.GetKeyWord( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, i ), pFile );
fputs( "\n", pFile );
}
fclose( pFile );
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
SetData_p7_KeyWordSet( hwndDlg, m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONINFORMATION, GSTR_APPNAME,
"ファイルへエクスポートしました。\n\n%s", szPath
);
return;
}
//! キーワードを整頓する
void CPropCommon::p7_Clean_List_KeyWord( HWND hwndDlg, HWND hwndLIST_KEYWORD )
{
if( IDYES == ::MessageBox( hwndDlg, "現在の設定では強調キーワードとして表示できないキーワードを削除しますか?",
GSTR_APPNAME, MB_YESNO | MB_ICONSTOP ) ){
if( m_CKeyWordSetMgr.CleanKeyWords( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ) ){
}
SetData_p7_KeyWordSet( hwndDlg, m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
}
}
/* ダイアログデータの設定 p7 */
void CPropCommon::SetData_p7( HWND hwndDlg )
{
int i;
// LV_ITEM lvi;
HWND hwndWork;
// int nIdx;
// char* pszWork;
/* セット名コンボボックスの値セット */
hwndWork = ::GetDlgItem( hwndDlg, IDC_COMBO_SET );
::SendMessage( hwndWork, CB_RESETCONTENT, 0, 0 ); /* コンボボックスを空にする */
if( 0 < m_CKeyWordSetMgr.m_nKeyWordSetNum ){
for( i = 0; i < m_CKeyWordSetMgr.m_nKeyWordSetNum; ++i ){
::SendMessage( hwndWork, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR)m_CKeyWordSetMgr.GetTypeName( i ) );
}
/* セット名コンボボックスのデフォルト選択 */
::SendMessage( hwndWork, CB_SETCURSEL, (WPARAM)m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, 0 );
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
SetData_p7_KeyWordSet( hwndDlg, m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
}else{
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
SetData_p7_KeyWordSet( hwndDlg, -1 );
}
return;
}
/* ダイアログデータの設定 p7 指定キーワードセットの設定 */
void CPropCommon::SetData_p7_KeyWordSet( HWND hwndDlg, int nIdx )
{
int i;
int nNum;
char* pszKeyWord;
HWND hwndList;
LV_ITEM lvi;
ListView_DeleteAllItems( ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD ) );
if( 0 <= nIdx ){
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELSET ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_CHECK_KEYWORDCASE ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_ADDKEYWORD ), TRUE );
// Jan. 29, 2005 genta キーワードセット切り替え直後はキーワードは未選択
// そのため有効にしてすぐにタイマーで無効になる.
// なのでここで無効にしておく.
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EDITKEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELKEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_IMPORT ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EXPORT ), TRUE );
}else{
::CheckDlgButton( hwndDlg, IDC_CHECK_KEYWORDCASE, FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELSET ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_CHECK_KEYWORDCASE ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_ADDKEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EDITKEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELKEYWORD ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_IMPORT ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EXPORT ), FALSE );
return;
}
/* キーワードの英大文字小文字區別 */
// if( TRUE == m_CKeyWordSetMgr.m_ppcKeyWordSetArr[nIdx]->m_nKEYWORDCASE ){
// if( TRUE == m_CKeyWordSetMgr.m_cKeyWordSetArr[nIdx].m_nKEYWORDCASE ){
// if( TRUE == m_CKeyWordSetMgr.m_nKEYWORDCASEArr[nIdx] ){ //MIK 2000.12.01 case sense
if( TRUE == m_CKeyWordSetMgr.GetKeyWordCase(nIdx) ){ //MIK 2000.12.01 case sense
::CheckDlgButton( hwndDlg, IDC_CHECK_KEYWORDCASE, TRUE );
}else{
::CheckDlgButton( hwndDlg, IDC_CHECK_KEYWORDCASE, FALSE );
}
/* n番目のセットのキーワードの數を返す */
nNum = m_CKeyWordSetMgr.GetKeyWordNum( nIdx );
hwndList = ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD );
// 2005.01.25 Moca/genta リスト追加中は再描畫を抑制してすばやく表示
::SendMessage( hwndList, WM_SETREDRAW, FALSE, 0 );
for( i = 0; i < nNum; ++i ){
/* n番目のセットのm番目のキーワードを返す */
pszKeyWord = const_cast<char*>(m_CKeyWordSetMgr.GetKeyWord( nIdx, i ));
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = pszKeyWord;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.lParam = i;
ListView_InsertItem( hwndList, &lvi );
}
m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx = nIdx;
// 2005.01.25 Moca/genta リスト追加完了のため再描畫許可
::SendMessage( hwndList, WM_SETREDRAW, TRUE, 0 );
//キーワード數を表示する。
DispKeywordCount( hwndDlg );
return;
}
/* ダイアログデータの取得 p7 */
int CPropCommon::GetData_p7( HWND hwndDlg )
{
// HWND hwndResList;
// int i;
// int j;
// int k;
//@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正
// m_nPageNum = ID_PAGENUM_KEYWORD;
return TRUE;
}
/* ダイアログデータの取得 p7 指定キーワードセットの取得 */
void CPropCommon::GetData_p7_KeyWordSet( HWND hwndDlg, int nIdx )
{
}
//キーワード數を表示する。
void CPropCommon::DispKeywordCount( HWND hwndDlg )
{
HWND hwndList;
int n;
TCHAR szCount[ 256 ];
hwndList = ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD );
n = ListView_GetItemCount( hwndList );
if( n < 0 ) n = 0;
int nAlloc;
nAlloc = m_CKeyWordSetMgr.GetAllocSize( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
nAlloc -= m_CKeyWordSetMgr.GetKeyWordNum( m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx );
nAlloc += m_CKeyWordSetMgr.GetFreeSize();
wsprintf( szCount, _T("(最大 %d 文字, 登録數 %d, 空き %d 個)"), MAX_KEYWORDLEN, n, nAlloc );
::SetWindowText( ::GetDlgItem( hwndDlg, IDC_STATIC_KEYWORD_COUNT ), szCount );
}
/*[EOF]*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -