/* ダイアログデータの設定 Keyword */ void CPropKeyword::SetData( HWND hwndDlg ) { int i; HWND hwndWork; /* セット名コンボボックスの値セット */ hwndWork = ::GetDlgItem( hwndDlg, IDC_COMBO_SET ); Combo_ResetContent( hwndWork ); /* コンボボックスを空にする */ if( 0 < m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nKeyWordSetNum ){ for( i = 0; i < m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nKeyWordSetNum; ++i ){ Combo_AddString( hwndWork, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.GetTypeName( i ) ); } /* セット名コンボボックスのデフォルト選択 */ Combo_SetCurSel( hwndWork, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); /* ダイアログデータの設定 Keyword 指定キーワードセットの設定 */ SetKeyWordSet( hwndDlg, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); }else{ /* ダイアログデータの設定 Keyword 指定キーワードセットの設定 */ SetKeyWordSet( hwndDlg, -1 ); } return; }
/* ダイアログデータの設定 */ void CPropTab::SetData( HWND hwndDlg ) { // Feb. 11, 2007 genta「ウィンドウ」シートより移動 ::CheckDlgButton( hwndDlg, IDC_CHECK_DispTabWnd, m_Common.m_sTabBar.m_bDispTabWnd ); //@@@ 2003.05.31 MIK ::CheckDlgButton( hwndDlg, IDC_CHECK_SameTabWidth, m_Common.m_sTabBar.m_bSameTabWidth ); //@@@ 2006.01.28 ryoji ::CheckDlgButton( hwndDlg, IDC_CHECK_DispTabIcon, m_Common.m_sTabBar.m_bDispTabIcon ); //@@@ 2006.01.28 ryoji ::CheckDlgButton( hwndDlg, IDC_CHECK_SortTabList, m_Common.m_sTabBar.m_bSortTabList ); //@@@ 2006.03.23 fon CheckDlgButtonBool( hwndDlg, IDC_CHECK_TAB_MULTILINE, m_Common.m_sTabBar.m_bTabMultiLine ); ::CheckDlgButton( hwndDlg, IDC_CHECK_DispTabWndMultiWin, ! m_Common.m_sTabBar.m_bDispTabWndMultiWin ); //@@@ 2003.05.31 MIK EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_TABWND_CAPTION ), _countof( m_Common.m_sTabBar.m_szTabWndCaption ) - 1 ); ::DlgItem_SetText( hwndDlg, IDC_TABWND_CAPTION, m_Common.m_sTabBar.m_szTabWndCaption ); HWND hwndCombo = ::GetDlgItem( hwndDlg, IDC_CHECK_DispTabClose ); Combo_ResetContent( hwndCombo ); int nSelPos = 0; for( int i = 0; i < _countof( DispTabCloseArr ); ++i ){ Combo_InsertString( hwndCombo, i, LS(DispTabCloseArr[i].nNameId) ); if( DispTabCloseArr[i].nMethod == m_Common.m_sTabBar.m_bDispTabClose ){ nSelPos = i; } } Combo_SetCurSel( hwndCombo, nSelPos ); hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_TAB_POSITION ); Combo_ResetContent( hwndCombo ); nSelPos = 0; for( int i = 0; i < _countof( TabPosArr ); ++i ){ Combo_InsertString( hwndCombo, i, LS(TabPosArr[i].nNameId) ); if( TabPosArr[i].nMethod == m_Common.m_sTabBar.m_eTabPosition ){ nSelPos = i; } } Combo_SetCurSel( hwndCombo, nSelPos ); // Feb. 11, 2007 genta 新規作成 ::CheckDlgButton( hwndDlg, IDC_CHECK_RetainEmptyWindow, m_Common.m_sTabBar.m_bTab_RetainEmptyWin ); ::CheckDlgButton( hwndDlg, IDC_CHECK_CloseOneWin, m_Common.m_sTabBar.m_bTab_CloseOneWin ); ::CheckDlgButton( hwndDlg, IDC_CHECK_ChgWndByWheel, m_Common.m_sTabBar.m_bChgWndByWheel ); // 2007.04.03 ryoji ::CheckDlgButton( hwndDlg, IDC_CHECK_OpenNewWin, m_Common.m_sTabBar.m_bNewWindow ); // 2009.06.17 // タブ フォント // 2013/4/24 Uchi m_hTabFont = SetFontLabel( hwndDlg, IDC_STATIC_TABFONT, m_Common.m_sTabBar.m_lf, m_Common.m_sTabBar.m_nPointSize); EnableTabPropInput(hwndDlg); }
/* ダイアログデータの設定 */ void CDlgPrintSetting::SetData( void ) { HDC hdc; HWND hwndComboFont; HWND hwndComboPaper; HWND hwndComboSettingName; int i; int nItemIdx; int nSelectIdx; /* フォント一覧 */ hdc = ::GetDC( m_hwndParent ); hwndComboFont = GetItemHwnd( IDC_COMBO_FONT_HAN ); Combo_ResetContent( hwndComboFont ); hwndComboFont = GetItemHwnd( IDC_COMBO_FONT_ZEN ); Combo_ResetContent( hwndComboFont ); ::EnumFontFamilies( hdc, NULL, (FONTENUMPROC)SetData_EnumFontFamProc, (LPARAM)this ); ::ReleaseDC( m_hwndParent, hdc ); /* 用紙サイズ一覧 */ hwndComboPaper = GetItemHwnd( IDC_COMBO_PAPER ); Combo_ResetContent( hwndComboPaper ); // 2006.08.14 Moca 用紙名一覧の重複削除 for( i = 0; i < CPrint::m_nPaperInfoArrNum; ++i ){ nItemIdx = Combo_AddString( hwndComboPaper, CPrint::m_paperInfoArr[i].m_pszName ); Combo_SetItemData( hwndComboPaper, nItemIdx, CPrint::m_paperInfoArr[i].m_nId ); } /* 印刷設定名一覧 */ hwndComboSettingName = GetItemHwnd( IDC_COMBO_SETTINGNAME ); Combo_ResetContent( hwndComboSettingName ); nSelectIdx = 0; for( i = 0; i < MAX_PRINTSETTINGARR; ++i ){ nItemIdx = Combo_AddString( hwndComboSettingName, m_PrintSettingArr[i].m_szPrintSettingName ); Combo_SetItemData( hwndComboSettingName, nItemIdx, i ); if( i == m_nCurrentPrintSetting ){ nSelectIdx = nItemIdx; } } Combo_SetCurSel( hwndComboSettingName, nSelectIdx ); /* 設定のタイプが変わった */ OnChangeSettingType( FALSE ); return; }
/*! ダイアログデータの設定 */ void CDlgKeywordSelect::SetData( void ) { HWND hwndCombo; int i; int index; for( index = 0; index < KEYWORD_SELECT_NUM; index++ ) { hwndCombo = ::GetDlgItem( GetHwnd(), keyword_select_target_combo[ index ] ); /* コンボボックスを空にする */ Combo_ResetContent( hwndCombo ); /* 一行目は空白 */ Combo_AddString( hwndCombo, L" " ); if( m_pCKeyWordSetMgr->m_nKeyWordSetNum > 0 ) { for( i = 0; i < m_pCKeyWordSetMgr->m_nKeyWordSetNum; i++ ) { Combo_AddString( hwndCombo, m_pCKeyWordSetMgr->GetTypeName( i ) ); } if( -1 == m_nSet[ index ] ) { /* セット名コンボボックスのデフォルト選択 */ Combo_SetCurSel( hwndCombo, 0 ); } else { /* セット名コンボボックスのデフォルト選択 */ Combo_SetCurSel( hwndCombo, m_nSet[ index ] + 1 ); } } } }
/* ダイアログデータの設定 Toolbar */ void CPropToolbar::SetData( HWND hwndDlg ) { HWND hwndCombo; HWND hwndResList; int i; int nListItemHeight; LRESULT lResult; /* 機能種別一覧に文字列をセット(コンボボックス) */ hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_FUNCKIND ); m_cLookup.SetCategory2Combo( hwndCombo ); // Oct. 15, 2001 genta /* 種別の先頭の項目を選択(コンボボックス) */ Combo_SetCurSel( hwndCombo, 0 ); //Oct. 14, 2000 JEPRO JEPRO 「--未定義--」を表示させないように大元 Funcode.cpp で変更してある ::PostMessageCmd( hwndCombo, WM_COMMAND, MAKELONG( IDC_COMBO_FUNCKIND, CBN_SELCHANGE ), (LPARAM)hwndCombo ); /* コントロールのハンドルを取得 */ hwndResList = ::GetDlgItem( hwndDlg, IDC_LIST_RES ); // 2014.11.25 フォントの高さが正しくなかったバグを修正 int nFontHeight = CTextWidthCalc(hwndResList).GetTextHeight(); nListItemHeight = std::max(nFontHeight, GetSystemMetrics(SM_CYSMICON)) + DpiScaleY(2); /* ツールバーボタンの情報をセット(リストボックス)*/ for( i = 0; i < m_Common.m_sToolBar.m_nToolBarButtonNum; ++i ){ // From Here Apr. 13, 2002 genta lResult = ::Listbox_ADDDATA( hwndResList, (LPARAM)m_Common.m_sToolBar.m_nToolBarButtonIdxArr[i] ); if( lResult == LB_ERR || lResult == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta lResult = List_SetItemHeight( hwndResList, lResult, nListItemHeight ); } /* ツールバーの先頭の項目を選択(リストボックス)*/ List_SetCurSel( hwndResList, 0 ); //Oct. 14, 2000 JEPRO ここをコメントアウトすると先頭項目が選択されなくなる /* フラットツールバーにする/しない */ ::CheckDlgButton( hwndDlg, IDC_CHECK_TOOLBARISFLAT, m_Common.m_sToolBar.m_bToolBarIsFlat ); return; }
/* ダイアログデータの設定 Keybind */ void CPropKeybind::SetData( HWND hwndDlg ) { HWND hwndCombo; HWND hwndKeyList; int i; /* 機能種別一覧に文字列をセット(コンボボックス)*/ hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_FUNCKIND ); m_cLookup.SetCategory2Combo( hwndCombo ); // Oct. 2, 2001 genta /* 種別の先頭の項目を選択(コンボボックス)*/ Combo_SetCurSel( hwndCombo, 0 ); //Oct. 14, 2000 JEPRO JEPRO 「--未定義--」を表示させないように大元 Funcode.cpp で変更してある /* キー一覧に文字列をセット(リストボックス)*/ hwndKeyList = ::GetDlgItem( hwndDlg, IDC_LIST_KEY ); for( i = 0; i < m_Common.m_sKeyBind.m_nKeyNameArrNum; ++i ){ ::List_AddString( hwndKeyList, m_Common.m_sKeyBind.m_pKeyNameArr[i].m_szKeyName ); } return; }
/* ダイアログデータの設定 */ void CPropWin::SetData( HWND hwndDlg ) { // BOOL bRet; /* 次回ウィンドウを開いたときツールバーを表示する */ ::CheckDlgButton( hwndDlg, IDC_CHECK_DispTOOLBAR, m_Common.m_sWindow.m_bDispTOOLBAR ); /* 次回ウィンドウを開いたときファンクションキーを表示する */ ::CheckDlgButton( hwndDlg, IDC_CHECK_DispFUNCKEYWND, m_Common.m_sWindow.m_bDispFUNCKEYWND ); /* ファンクションキー表示位置/0:上 1:下 */ if( 0 == m_Common.m_sWindow.m_nFUNCKEYWND_Place ){ ::CheckDlgButton( hwndDlg, IDC_RADIO_FUNCKEYWND_PLACE1, TRUE ); ::CheckDlgButton( hwndDlg, IDC_RADIO_FUNCKEYWND_PLACE2, FALSE ); }else{ ::CheckDlgButton( hwndDlg, IDC_RADIO_FUNCKEYWND_PLACE1, FALSE ); ::CheckDlgButton( hwndDlg, IDC_RADIO_FUNCKEYWND_PLACE2, TRUE ); } // 2002/11/04 Moca ファンクションキーのグループボタン数 ::SetDlgItemInt( hwndDlg, IDC_EDIT_FUNCKEYWND_GROUPNUM, m_Common.m_sWindow.m_nFUNCKEYWND_GroupNum, FALSE ); //From Here@@@ 2003.06.13 MIK // Feb. 12, 2007 genta TAB関連は「タブバー」シートへ移動 //To Here@@@ 2003.06.13 MIK // Feb. 11, 2007 genta TAB関連は「タブバー」シートへ移動 /* 次回ウィンドウを開いたときステータスバーを表示する */ ::CheckDlgButton( hwndDlg, IDC_CHECK_DispSTATUSBAR, m_Common.m_sWindow.m_bDispSTATUSBAR ); /* ルーラー高さ */ ::SetDlgItemInt( hwndDlg, IDC_EDIT_nRulerHeight, m_Common.m_sWindow.m_nRulerHeight, FALSE ); /* ルーラーとテキストの隙間 */ ::SetDlgItemInt( hwndDlg, IDC_EDIT_nRulerBottomSpace, m_Common.m_sWindow.m_nRulerBottomSpace, FALSE ); // Sep. 18. 2002 genta 行番号とテキストの隙間 ::SetDlgItemInt( hwndDlg, IDC_EDIT_nLineNumberRightSpace, m_Common.m_sWindow.m_nLineNumRightSpace, FALSE ); /* ルーラーのタイプ */// del 2008/7/4 Uchi // if( 0 == m_Common.m_sWindow.m_nRulerType ){ // ::CheckDlgButton( hwndDlg, IDC_RADIO_nRulerType_0, TRUE ); // ::CheckDlgButton( hwndDlg, IDC_RADIO_nRulerType_1, FALSE ); // }else{ // ::CheckDlgButton( hwndDlg, IDC_RADIO_nRulerType_0, FALSE ); // ::CheckDlgButton( hwndDlg, IDC_RADIO_nRulerType_1, TRUE ); // } /* 水平スクロールバー */ ::CheckDlgButton( hwndDlg, IDC_CHECK_bScrollBarHorz, m_Common.m_sWindow.m_bScrollBarHorz ); /* アイコン付きメニュー */ ::CheckDlgButton( hwndDlg, IDC_CHECK_bMenuIcon, m_Common.m_sWindow.m_bMenuIcon ); // 2001/06/20 Start by asa-o: スクロールの同期 ::CheckDlgButton( hwndDlg, IDC_CHECK_SplitterWndVScroll, m_Common.m_sWindow.m_bSplitterWndVScroll ); ::CheckDlgButton( hwndDlg, IDC_CHECK_SplitterWndHScroll, m_Common.m_sWindow.m_bSplitterWndHScroll ); // 2001/06/20 End // Apr. 05, 2003 genta ウィンドウキャプションのカスタマイズ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_WINCAPTION_ACTIVE ), _countof( m_Common.m_sWindow.m_szWindowCaptionActive ) - 1 ); //@@@ 2003.06.13 MIK EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_WINCAPTION_INACTIVE ), _countof( m_Common.m_sWindow.m_szWindowCaptionInactive ) - 1 ); //@@@ 2003.06.13 MIK ::DlgItem_SetText( hwndDlg, IDC_WINCAPTION_ACTIVE, m_Common.m_sWindow.m_szWindowCaptionActive ); ::DlgItem_SetText( hwndDlg, IDC_WINCAPTION_INACTIVE, m_Common.m_sWindow.m_szWindowCaptionInactive ); // Fronm Here Sept. 9, 2000 JEPRO // ファンクションキーを表示する時だけその位置指定をEnableに設定 EnableWinPropInput( hwndDlg ); // To Here Sept. 9, 2000 // 言語選択 HWND hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_LANGUAGE ); Combo_ResetContent( hwndCombo ); int nSelPos = 0; UINT uiIndex = 0; for( uiIndex = 0; uiIndex < CSelectLang::m_psLangInfoList.size(); uiIndex++ ){ CSelectLang::SSelLangInfo* psLangInfo = CSelectLang::m_psLangInfoList.at( uiIndex ); Combo_InsertString( hwndCombo, uiIndex, psLangInfo->szLangName ); if ( _tcscmp( m_Common.m_sWindow.m_szLanguageDll, psLangInfo->szDllName ) == 0 ) { nSelPos = uiIndex; } } Combo_SetCurSel( hwndCombo, nSelPos ); return; }
/* ダイアログデータの設定 */ void CDlgGrep::SetData( void ) { /* 検索文字列 */ ::DlgItem_SetText( GetHwnd(), IDC_COMBO_TEXT, m_strText.c_str() ); /* 検索ファイル */ ::DlgItem_SetText( GetHwnd(), IDC_COMBO_FILE, m_szFile ); /* 検索フォルダ */ ::DlgItem_SetText( GetHwnd(), IDC_COMBO_FOLDER, m_szFolder ); if((m_szFolder[0] == _T('\0') || m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder) && m_szCurrentFilePath[0] != _T('\0') ){ TCHAR szWorkFolder[MAX_PATH]; TCHAR szWorkFile[MAX_PATH]; SplitPath_FolderAndFile( m_szCurrentFilePath, szWorkFolder, szWorkFile ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); } /* サブフォルダからも検索する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_SUBFOLDER, m_bSubFolder ); // この編集中のテキストから検索する ::CheckDlgButton( GetHwnd(), IDC_CHK_FROMTHISTEXT, m_bFromThisText ); // 2010.05.30 関数化 SetDataFromThisText( m_bFromThisText != FALSE ); /* 英大文字と英小文字を区別する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, m_sSearchOption.bLoHiCase ); // 2001/06/23 N.Nakatani 現時点ではGrepでは単語単位の検索はサポートできていません // 2002/03/07 テストサポート /* 一致する単語のみ検索する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_WORD, m_sSearchOption.bWordOnly ); // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ) , false ); //チェックボックスを使用不可にすも /* 文字コード自動判別 */ // ::CheckDlgButton( GetHwnd(), IDC_CHK_KANJICODEAUTODETECT, m_bKanjiCode_AutoDetect ); // 2002/09/22 Moca Add /* 文字コードセット */ { int nIdx, nCurIdx = -1; ECodeType nCharSet; HWND hWndCombo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); nCurIdx = Combo_GetCurSel( hWndCombo ); CCodeTypesForCombobox cCodeTypes; for( nIdx = 0; nIdx < cCodeTypes.GetCount(); nIdx++ ){ nCharSet = (ECodeType)Combo_GetItemData( hWndCombo, nIdx ); if( nCharSet == m_nGrepCharSet ){ nCurIdx = nIdx; } } if( nCurIdx != -1 ){ Combo_SetCurSel( hWndCombo, nCurIdx ); }else{ ::CheckDlgButton( GetHwnd(), IDC_CHECK_CP, TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_CP ), FALSE ); nCurIdx = CCodePage::AddComboCodePages(GetHwnd(), hWndCombo, m_nGrepCharSet); if( nCurIdx == -1 ){ Combo_SetCurSel( hWndCombo, 0 ); } } } /* 行を出力するか該当部分だけ出力するか */ if( m_nGrepOutputLineType == 1 ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTLINE, TRUE ); }else if( m_nGrepOutputLineType == 2 ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_NOHIT, TRUE ); }else{ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTMARKED, TRUE ); } ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),TRUE ); /* Grep: 出力形式 */ if( 1 == m_nGrepOutputStyle ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE1, TRUE ); }else if( 2 == m_nGrepOutputStyle ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE2, TRUE ); }else if( 3 == m_nGrepOutputStyle ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE3, TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),FALSE ); }else{ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE1, TRUE ); } // From Here Jun. 29, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し // 処理フロー及び判定条件の見直し。必ず正規表現のチェックと // 無関係にCheckRegexpVersionを通過するようにした。 if( CheckRegexpVersion( GetHwnd(), IDC_STATIC_JRE32VER, false ) && m_sSearchOption.bRegularExp){ /* 英大文字と英小文字を区別する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 1 ); // 正規表現のときも選択できるように。 // ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, 1 ); // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_LOHICASE ), FALSE ); // 2001/06/23 N.Nakatani /* 単語単位で探す */ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ), FALSE ); } else { ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 0 ); } // To Here Jun. 29, 2001 genta if( m_szCurrentFilePath[0] != _T('\0') ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_FROMTHISTEXT ), TRUE ); }else{ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_FROMTHISTEXT ), FALSE ); } CheckDlgButtonBool( GetHwnd(), IDC_CHECK_FILE_ONLY, m_bGrepOutputFileOnly ); CheckDlgButtonBool( GetHwnd(), IDC_CHECK_BASE_PATH, m_bGrepOutputBaseFolder ); CheckDlgButtonBool( GetHwnd(), IDC_CHECK_SEP_FOLDER, m_bGrepSeparateFolder ); // フォルダの初期値をカレントフォルダにする ::CheckDlgButton( GetHwnd(), IDC_CHK_DEFAULTFOLDER, m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder ); return; }
/* 設定のタイプが変わった */ void CDlgPrintSetting::OnChangeSettingType( BOOL bGetData ) { HWND hwndComboSettingName; HWND hwndCtrl; int nIdx1; int nItemNum; int nItemData; int i; if( bGetData ){ GetData(); } hwndComboSettingName = GetItemHwnd( IDC_COMBO_SETTINGNAME ); nIdx1 = Combo_GetCurSel( hwndComboSettingName ); if( CB_ERR == nIdx1 ){ return; } m_nCurrentPrintSetting = Combo_GetItemData( hwndComboSettingName, nIdx1 ); /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_HAN ); nIdx1 = Combo_FindStringExact( hwndCtrl, 0, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); Combo_SetCurSel( hwndCtrl, nIdx1 ); /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_ZEN ); nIdx1 = Combo_FindStringExact( hwndCtrl, 0, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceZen ); Combo_SetCurSel( hwndCtrl, nIdx1 ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_FONTHEIGHT, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_LINESPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSUU, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10, FALSE ); /* 用紙サイズ一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_PAPER ); nItemNum = Combo_GetCount( hwndCtrl ); for( i = 0; i < nItemNum; ++i ){ nItemData = Combo_GetItemData( hwndCtrl, i ); if( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperSize == nItemData ){ Combo_SetCurSel( hwndCtrl, i ); break; } } // 用紙の向き // 2006.08.14 Moca 用紙方向コンボボックスを廃止し、ボタンを有効化 bool bIsPortrait = ( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperOrientation == DMORIENT_PORTRAIT ); CheckDlgButtonBool( GetHwnd(), IDC_RADIO_PORTRAIT, bIsPortrait ); CheckDlgButtonBool( GetHwnd(), IDC_RADIO_LANDSCAPE, !bIsPortrait ); // 余白 ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINTY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINBY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINLX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINRX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10, FALSE ); // 行番号を印刷 CheckDlgButtonBool( GetHwnd(), IDC_CHECK_LINENUMBER, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintLineNumber ); // 英文ワードラップ CheckDlgButtonBool( GetHwnd(), IDC_CHECK_WORDWRAP, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintWordWrap ); // 行頭禁則 //@@@ 2002.04.09 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKUHEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuHead ); // 行末禁則 //@@@ 2002.04.09 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKUTAIL, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuTail ); // 改行文字をぶら下げる //@@@ 2002.04.13 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKURET, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuRet ); // 句読点をぶら下げる //@@@ 2002.04.17 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKUKUTO, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuKuto ); // カラー印刷 ::CheckDlgButton( GetHwnd(), IDC_CHECK_COLORPRINT, m_PrintSettingArr[m_nCurrentPrintSetting].m_bColorPrint ? BST_CHECKED : BST_UNCHECKED); /* ヘッダー */ ::DlgItem_SetText( GetHwnd(), IDC_EDIT_HEAD1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[POS_LEFT] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_HEAD2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[POS_CENTER] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_HEAD3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[POS_RIGHT] ); // 100文字で制限しないと。。。 /* フッター */ ::DlgItem_SetText( GetHwnd(), IDC_EDIT_FOOT1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[POS_LEFT] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_FOOT2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[POS_CENTER] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_FOOT3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[POS_RIGHT] ); // 100文字で制限しないと。。。 // ヘッダフォント SetFontName( IDC_STATIC_FONT_HEAD, IDC_CHECK_USE_FONT_HEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize ); // フッタフォント SetFontName( IDC_STATIC_FONT_FOOT, IDC_CHECK_USE_FONT_FOOT, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize ); UpdatePrintableLineAndColumn(); return; }
BOOL CDlgPrintSetting::OnBnClicked( int wID ) { TCHAR szWork[256]; CDlgInput1 cDlgInput1; HWND hwndComboSettingName; switch( wID ){ case IDC_BUTTON_HELP: /* 「印刷ページ設定」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_PRINT_PAGESETUP) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDC_BUTTON_EDITSETTINGNAME: _tcscpy( szWork, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName ); { BOOL bDlgInputResult=cDlgInput1.DoModal( m_hInstance, GetHwnd(), LS(STR_DLGPRNST1), LS(STR_DLGPRNST2), _countof( m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName ) - 1, szWork ); if( !bDlgInputResult ){ return TRUE; } } if( szWork[0] != _T('\0') ){ int size = _countof(m_PrintSettingArr[0].m_szPrintSettingName) - 1; _tcsncpy( m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName, szWork, size); m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName[size] = _T('\0'); /* 印刷設定名一覧 */ hwndComboSettingName = GetItemHwnd( IDC_COMBO_SETTINGNAME ); Combo_ResetContent( hwndComboSettingName ); int nSelectIdx; int i; int nItemIdx; nSelectIdx = 0; for( i = 0; i < MAX_PRINTSETTINGARR; ++i ){ nItemIdx = Combo_AddString( hwndComboSettingName, m_PrintSettingArr[i].m_szPrintSettingName ); Combo_SetItemData( hwndComboSettingName, nItemIdx, i ); if( i == m_nCurrentPrintSetting ){ nSelectIdx = nItemIdx; } } Combo_SetCurSel( hwndComboSettingName, nSelectIdx ); } return TRUE; case IDC_BUTTON_FONT_HEAD: { LOGFONT lf = m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader; INT nPointSize; if (lf.lfFaceName[0] == _T('\0')) { // 半角フォントを設定 auto_strcpy( lf.lfFaceName, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); // 1/10mm→画面ドット数 lf.lfHeight = -( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight * ::GetDeviceCaps ( ::GetDC( m_hwndParent ), LOGPIXELSY ) / 254 ); } if (MySelectFont( &lf, &nPointSize, GetHwnd(), false)) { m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader = lf; m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize = nPointSize; SetFontName( IDC_STATIC_FONT_HEAD, IDC_CHECK_USE_FONT_HEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize ); UpdatePrintableLineAndColumn(); } } return TRUE; case IDC_BUTTON_FONT_FOOT: { LOGFONT lf = m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter; INT nPointSize; if (lf.lfFaceName[0] == _T('\0')) { // 半角フォントを設定 auto_strcpy( lf.lfFaceName, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); // 1/10mm→画面ドット数 lf.lfHeight = -( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight * ::GetDeviceCaps ( ::GetDC( m_hwndParent ), LOGPIXELSY ) / 254 ); } if (MySelectFont( &lf, &nPointSize, GetHwnd(), false)) { m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter = lf; m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize = nPointSize; SetFontName( IDC_STATIC_FONT_FOOT, IDC_CHECK_USE_FONT_FOOT, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize ); UpdatePrintableLineAndColumn(); } } return TRUE; case IDC_CHECK_USE_FONT_HEAD: if (m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader.lfFaceName[0] != _T('\0')) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, 0, sizeof(LOGFONT) ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize = 0; SetFontName( IDC_STATIC_FONT_HEAD, IDC_CHECK_USE_FONT_HEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize ); } UpdatePrintableLineAndColumn(); return TRUE; case IDC_CHECK_USE_FONT_FOOT: if (m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter.lfFaceName[0] != _T('\0')) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, 0, sizeof(LOGFONT) ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize = 0; SetFontName( IDC_STATIC_FONT_FOOT, IDC_CHECK_USE_FONT_FOOT, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize ); } UpdatePrintableLineAndColumn(); return TRUE; case IDOK: if( CalcPrintableLineAndColumn() ){ /* ダイアログデータの取得 */ ::EndDialog( GetHwnd(), GetData() ); } return TRUE; case IDCANCEL: ::EndDialog( GetHwnd(), FALSE ); return TRUE; case IDC_RADIO_PORTRAIT: case IDC_RADIO_LANDSCAPE: UpdatePrintableLineAndColumn(); break; // ここでは行と桁の更新要求のみ。後の処理はCDialogに任せる。 case IDC_CHECK_LINENUMBER: UpdatePrintableLineAndColumn(); break; // ここでは行と桁の更新要求のみ。後の処理はCDialogに任せる。 } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
/* ダイアログデータの設定 */ void CDlgJump::SetData( void ) { CEditDoc* pCEditDoc = (CEditDoc*)m_lParam; CFuncInfoArr cFuncInfoArr; int i; HWND hwndCtrl; wchar_t szText[1024]; int nIndexCurSel = 0; // Sep. 11, 2004 genta 初期化 int nIndex; int nWorkLine; //$$ 条件により、レイアウト・ロジックの単位が混在するため、ミスの原因になりやすい int nPLSQLBlockNum; // GetHwnd() = hwndDlg; //From Here Oct. 7, 2000 JEPRO 前回入力した行番号を保持するように下行を変更 // ::DlgItem_SetText( GetHwnd(), IDC_EDIT_LINENUM, "" ); /* 行番号 */ if( 0 == m_nLineNum ){ ::DlgItem_SetText( GetHwnd(), IDC_EDIT_LINENUM, _T("") ); /* 行番号 */ }else{ ::SetDlgItemInt( GetHwnd(), IDC_EDIT_LINENUM, m_nLineNum, FALSE ); /* 前回の行番号 */ } //To Here Oct. 7, 2000 ::SetDlgItemInt( GetHwnd(), IDC_EDIT_PLSQL_E1, m_nPLSQL_E1, FALSE ); /* PL/SQL関数リスト作成 */ hwndCtrl = ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ); /* タイプ別に設定されたアウトライン解析方法 */ if( OUTLINE_PLSQL == pCEditDoc->m_cDocType.GetDocumentAttribute().m_eDefaultOutline ){ pCEditDoc->m_cDocOutline.MakeFuncList_PLSQL( &cFuncInfoArr ); } nWorkLine = -1; nIndex = 0; nPLSQLBlockNum = 0; for( i = 0; i < cFuncInfoArr.GetNum(); ++i ){ if( 31 == cFuncInfoArr.GetAt( i )->m_nInfo || 41 == cFuncInfoArr.GetAt( i )->m_nInfo ){ } if( 31 == cFuncInfoArr.GetAt( i )->m_nInfo ){ if( m_pShareData->m_bLineNumIsCRLF_ForJump ){ /* 行番号の表示 false=折り返し単位/true=改行単位 */ auto_sprintf( szText, LSW(STR_DLGJUMP_PSLQL), cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF, cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetStringPtr() ); }else{ auto_sprintf( szText, LSW(STR_DLGJUMP_PSLQL), cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT, cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetStringPtr() ); } nIndex = Combo_AddString( hwndCtrl, szText ); if( m_pShareData->m_bLineNumIsCRLF_ForJump ){ /* 行番号の表示 false=折り返し単位/true=改行単位 */ Combo_SetItemData( hwndCtrl, nIndex, (Int)cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF ); } else{ Combo_SetItemData( hwndCtrl, nIndex, (Int)cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT ); } nPLSQLBlockNum++; } if( 41 == cFuncInfoArr.GetAt( i )->m_nInfo ){ if( m_pShareData->m_bLineNumIsCRLF_ForJump ){ /* 行番号の表示 false=折り返し単位/true=改行単位 */ auto_sprintf( szText, LSW(STR_DLGJUMP_PSLQL), cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF, cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetStringPtr() ); }else{ auto_sprintf( szText, LSW(STR_DLGJUMP_PSLQL), cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT, cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetStringPtr() ); } nIndexCurSel = nIndex = Combo_AddString( hwndCtrl, szText ); if( m_pShareData->m_bLineNumIsCRLF_ForJump ){ /* 行番号の表示 false=折り返し単位/true=改行単位 */ nWorkLine = (Int)cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF; Combo_SetItemData( hwndCtrl, nIndex, (Int)cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF ); }else{ nWorkLine = (Int)cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT; Combo_SetItemData( hwndCtrl, nIndex, (Int)cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT ); } ++nPLSQLBlockNum; } } Combo_SetCurSel( hwndCtrl, nIndexCurSel ); /* PL/SQLのパッケージ本体が検出された場合 */ if( -1 != nWorkLine ){ m_nPLSQL_E1 = nWorkLine; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_PLSQL_E1, m_nPLSQL_E1, FALSE ); } /* PL/SQLのパッケージブロックが検出された場合 */ if( 0 < nPLSQLBlockNum ){ m_bPLSQL = TRUE; } ::CheckDlgButton( GetHwnd(), IDC_CHECK_PLSQL, m_bPLSQL ); /* PL/SQLソースの有効行か */ if( BST_CHECKED == ::IsDlgButtonChecked( GetHwnd(), IDC_CHECK_PLSQL ) ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL1 ), TRUE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL2 ), TRUE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL3 ), TRUE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_EDIT_PLSQL_E1 ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_SPIN_PLSQL_E1 ), TRUE ); //Oct. 6, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ), TRUE ); m_pShareData->m_bLineNumIsCRLF_ForJump = true; ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_CRLF ), FALSE ); }else{ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL1 ), FALSE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL2 ), FALSE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL3 ), FALSE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_EDIT_PLSQL_E1 ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_SPIN_PLSQL_E1 ), FALSE ); //Oct. 6, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_CRLF ), TRUE ); } /* 行番号の表示 false=折り返し単位/true=改行単位 */ if( m_pShareData->m_bLineNumIsCRLF_ForJump ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT, FALSE ); ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_CRLF, TRUE ); }else{ ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT, TRUE ); ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_CRLF, FALSE ); } return; }
/* Keyword メッセージ処理 */ INT_PTR CPropKeyword::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; HWND hwndCtl; NMHDR* pNMHDR; int nIndex1; int i; LV_COLUMN lvc; LV_ITEM* plvi; static HWND hwndCOMBO_SET; static HWND hwndLIST_KEYWORD; RECT rc; CDlgInput1 cDlgInput1; wchar_t szKeyWord[MAX_KEYWORDLEN + 1]; LONG_PTR lStyle; LV_DISPINFO* plvdi; LV_KEYDOWN* pnkd; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Keyword */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); if( wParam == IDOK ){ // 独立ウィンドウ hwndCtl = ::GetDlgItem( hwndDlg, IDOK ); GetWindowRect( hwndCtl, &rc ); i = rc.bottom; // OK,CANCELボタンの下端 GetWindowRect( hwndDlg, &rc ); SetWindowPos( hwndDlg, NULL, 0, 0, rc.right-rc.left, i-rc.top+10, SWP_NOZORDER|SWP_NOMOVE ); std::tstring title = LS(STR_PROPCOMMON); title += _T(" - "); title += LS(STR_PROPCOMMON_KEYWORD); SetWindowText( hwndDlg, title.c_str() ); hwndCOMBO_SET = ::GetDlgItem( hwndDlg, IDC_COMBO_SET ); Combo_SetCurSel( hwndCOMBO_SET, m_nKeywordSet1 ); } else{ hwndCtl = ::GetDlgItem( hwndDlg, IDOK ); ShowWindow( hwndCtl, SW_HIDE ); hwndCtl = ::GetDlgItem( hwndDlg, IDCANCEL ); ShowWindow( hwndCtl, SW_HIDE ); } /* コントロールのハンドルを取得 */ hwndCOMBO_SET = ::GetDlgItem( hwndDlg, IDC_COMBO_SET ); hwndLIST_KEYWORD = ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD ); ::GetWindowRect( hwndLIST_KEYWORD, &rc ); lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.fmt = LVCFMT_LEFT; lvc.cx = rc.right - rc.left; lvc.pszText = const_cast<TCHAR*>(_T("")); lvc.iSubItem = 0; ListView_InsertColumn( hwndLIST_KEYWORD, 0, &lvc ); lStyle = ::GetWindowLongPtr( hwndLIST_KEYWORD, GWL_STYLE ); ::SetWindowLongPtr( hwndLIST_KEYWORD, GWL_STYLE, lStyle | LVS_SHOWSELALWAYS ); /* コントロール更新のタイミング用のタイマーを起動 */ ::SetTimer( hwndDlg, 1, 300, NULL ); return TRUE; case WM_NOTIFY: pNMHDR = (NMHDR*)lParam; pnkd = (LV_KEYDOWN *)lParam; plvdi = (LV_DISPINFO*)lParam; plvi = &plvdi->item; if( hwndLIST_KEYWORD == pNMHDR->hwndFrom ){ switch( pNMHDR->code ){ case NM_DBLCLK: // MYTRACE( _T("NM_DBLCLK \n") ); /* リスト中で選択されているキーワードを編集する */ Edit_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; case LVN_BEGINLABELEDIT: #ifdef _DEBUG MYTRACE( _T("LVN_BEGINLABELEDIT\n") ); MYTRACE( _T(" plvi->mask =[%xh]\n"), plvi->mask ); MYTRACE( _T(" plvi->iItem =[%d]\n"), plvi->iItem ); MYTRACE( _T(" plvi->iSubItem =[%d]\n"), plvi->iSubItem ); if (plvi->mask & LVIF_STATE) MYTRACE( _T(" plvi->state =[%xf]\n"), plvi->state ); MYTRACE( _T(" plvi->stateMask =[%xh]\n"), plvi->stateMask ); if (plvi->mask & LVIF_TEXT) MYTRACE( _T(" plvi->pszText =[%ts]\n"), plvi->pszText ); MYTRACE( _T(" plvi->cchTextMax=[%d]\n"), plvi->cchTextMax ); if (plvi->mask & LVIF_IMAGE) MYTRACE( _T(" plvi->iImage=[%d]\n"), plvi->iImage ); if (plvi->mask & LVIF_PARAM) MYTRACE( _T(" plvi->lParam=[%xh(%d)]\n"), plvi->lParam, plvi->lParam ); #endif return TRUE; case LVN_ENDLABELEDIT: #ifdef _DEBUG MYTRACE( _T("LVN_ENDLABELEDIT\n") ); MYTRACE( _T(" plvi->mask =[%xh]\n"), plvi->mask ); MYTRACE( _T(" plvi->iItem =[%d]\n"), plvi->iItem ); MYTRACE( _T(" plvi->iSubItem =[%d]\n"), plvi->iSubItem ); if (plvi->mask & LVIF_STATE) MYTRACE( _T(" plvi->state =[%xf]\n"), plvi->state ); MYTRACE( _T(" plvi->stateMask =[%xh]\n"), plvi->stateMask ); if (plvi->mask & LVIF_TEXT) MYTRACE( _T(" plvi->pszText =[%ts]\n"), plvi->pszText ); MYTRACE( _T(" plvi->cchTextMax=[%d]\n"), plvi->cchTextMax ); if (plvi->mask & LVIF_IMAGE) MYTRACE( _T(" plvi->iImage=[%d]\n"), plvi->iImage ); if (plvi->mask & LVIF_PARAM) MYTRACE( _T(" plvi->lParam=[%xh(%d)]\n"), plvi->lParam, plvi->lParam ); #endif if( NULL == plvi->pszText ){ return TRUE; } if( plvi->pszText[0] != _T('\0') ){ if( MAX_KEYWORDLEN < _tcslen( plvi->pszText ) ){ InfoMessage( hwndDlg, LS(STR_PROPCOMKEYWORD_ERR_LEN), MAX_KEYWORDLEN ); return TRUE; } /* n番目のセットにキーワードを編集 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.UpdateKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, plvi->lParam, to_wchar(plvi->pszText) ); }else{ /* n番目のセットのm番目のキーワードを削除 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.DelKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, plvi->lParam ); } /* ダイアログデータの設定 Keyword 指定キーワードセットの設定 */ SetKeyWordSet( hwndDlg, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); ListView_SetItemState( hwndLIST_KEYWORD, plvi->iItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED ); return TRUE; case LVN_KEYDOWN: // MYTRACE( _T("LVN_KEYDOWN\n") ); switch( pnkd->wVKey ){ case VK_DELETE: /* リスト中で選択されているキーワードを削除する */ Delete_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); break; case VK_SPACE: /* リスト中で選択されているキーワードを編集する */ Edit_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); break; } return TRUE; } }else{ switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_KEYWORD ); return TRUE; case PSN_KILLACTIVE: DEBUG_TRACE( _T("Keyword PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Keyword */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_KEYWORD; return TRUE; } } break; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ hwndCtl = (HWND) lParam; /* コントロールのハンドル */ if( hwndCOMBO_SET == hwndCtl){ switch( wNotifyCode ){ case CBN_SELCHANGE: nIndex1 = Combo_GetCurSel( hwndCOMBO_SET ); /* ダイアログデータの設定 Keyword 指定キーワードセットの設定 */ SetKeyWordSet( hwndDlg, nIndex1 ); return TRUE; } }else{ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_BUTTON_ADDSET: /* セット追加 */ if( MAX_SETNUM <= m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nKeyWordSetNum ){ InfoMessage( hwndDlg, LS(STR_PROPCOMKEYWORD_SETMAX), MAX_SETNUM ); return TRUE; } /* モードレスダイアログの表示 */ szKeyWord[0] = L'\0'; // Oct. 5, 2002 genta 長さ制限の設定を修正.バッファオーバーランしていた. if( !cDlgInput1.DoModal( G_AppInstance(), hwndDlg, LS(STR_PROPCOMKEYWORD_SETNAME1), LS(STR_PROPCOMKEYWORD_SETNAME2), MAX_SETNAMELEN, szKeyWord ) ){ return TRUE; } if( szKeyWord[0] != L'\0' ){ /* セットの追加 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.AddKeyWordSet( szKeyWord, false ); m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx = m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nKeyWordSetNum - 1; /* ダイアログデータの設定 Keyword */ SetData( hwndDlg ); } return TRUE; case IDC_BUTTON_DELSET: /* セット削除 */ nIndex1 = Combo_GetCurSel( hwndCOMBO_SET ); if( CB_ERR == nIndex1 ){ return TRUE; } /* 削除対象のセットを使用しているファイルタイプを列挙 */ static TCHAR pszLabel[1024]; _tcscpy( pszLabel, _T("") ); for( i = 0; i < GetDllShareData().m_nTypesCount; ++i ){ std::auto_ptr<STypeConfig> type(new STypeConfig()); CDocTypeManager().GetTypeConfig( CTypeConfig(i), *type ); // 2002/04/25 YAZAKI STypeConfig全体を保持する必要はないし、m_pShareDataを直接見ても問題ない。 if( nIndex1 == m_Types_nKeyWordSetIdx[i].index[0] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[1] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[2] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[3] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[4] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[5] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[6] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[7] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[8] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[9] ){ _tcscat( pszLabel, _T("・") ); _tcscat( pszLabel, type->m_szTypeName ); _tcscat( pszLabel, _T("(") ); _tcscat( pszLabel, type->m_szTypeExts ); _tcscat( pszLabel, _T(")") ); _tcscat( pszLabel, _T("\n") ); } } if( IDCANCEL == ::MYMESSAGEBOX( hwndDlg, MB_OKCANCEL | MB_ICONQUESTION, GSTR_APPNAME, LS(STR_PROPCOMKEYWORD_SETDEL), m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.GetTypeName( nIndex1 ), pszLabel ) ){ return TRUE; } /* 削除対象のセットを使用しているファイルタイプのセットをクリア */ for( i = 0; i < GetDllShareData().m_nTypesCount; ++i ){ // 2002/04/25 YAZAKI STypeConfig全体を保持する必要はない。 for( int j = 0; j < MAX_KEYWORDSET_PER_TYPE; j++ ){ if( nIndex1 == m_Types_nKeyWordSetIdx[i].index[j] ){ m_Types_nKeyWordSetIdx[i].index[j] = -1; } else if( nIndex1 < m_Types_nKeyWordSetIdx[i].index[j] ){ m_Types_nKeyWordSetIdx[i].index[j]--; } } } /* n番目のセットを削除 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.DelKeyWordSet( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); /* ダイアログデータの設定 Keyword */ SetData( hwndDlg ); return TRUE; case IDC_BUTTON_KEYSETRENAME: // キーワードセットの名称変更 // モードレスダイアログの表示 wcscpy( szKeyWord, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.GetTypeName( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ) ); { BOOL bDlgInputResult = cDlgInput1.DoModal( G_AppInstance(), hwndDlg, LS(STR_PROPCOMKEYWORD_RENAME1), LS(STR_PROPCOMKEYWORD_RENAME2), MAX_SETNAMELEN, szKeyWord ); if( !bDlgInputResult ){ return TRUE; } } if( szKeyWord[0] != L'\0' ){ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.SetTypeName( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, szKeyWord ); // ダイアログデータの設定 Keyword SetData( hwndDlg ); } return TRUE; case IDC_CHECK_KEYWORDCASE: /* キーワードの英大文字小文字区別 */ // m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_bKEYWORDCASEArr[ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ] = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KEYWORDCASE ); //MIK 2000.12.01 case sense m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.SetKeyWordCase(m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KEYWORDCASE )); //MIK 2000.12.01 case sense return TRUE; case IDC_BUTTON_ADDKEYWORD: /* キーワード追加 */ /* n番目のセットのキーワードの数を返す */ if( !m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.CanAddKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ) ){ InfoMessage( hwndDlg, LS(STR_PROPCOMKEYWORD_KEYMAX) ); return TRUE; } /* モードレスダイアログの表示 */ szKeyWord[0] = L'\0'; if( !cDlgInput1.DoModal( G_AppInstance(), hwndDlg, LS(STR_PROPCOMKEYWORD_KEYADD1), LS(STR_PROPCOMKEYWORD_KEYADD2), MAX_KEYWORDLEN, szKeyWord ) ){ return TRUE; } if( szKeyWord[0] != L'\0' ){ /* n番目のセットにキーワードを追加 */ if( 0 == m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.AddKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, szKeyWord ) ){ // ダイアログデータの設定 Keyword 指定キーワードセットの設定 SetKeyWordSet( hwndDlg, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); } } return TRUE; case IDC_BUTTON_EDITKEYWORD: /* キーワード編集 */ /* リスト中で選択されているキーワードを編集する */ Edit_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; case IDC_BUTTON_DELKEYWORD: /* キーワード削除 */ /* リスト中で選択されているキーワードを削除する */ Delete_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; // From Here 2005.01.26 Moca case IDC_BUTTON_KEYCLEAN: Clean_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; // To Here 2005.01.26 Moca case IDC_BUTTON_IMPORT: /* インポート */ /* リスト中のキーワードをインポートする */ Import_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; case IDC_BUTTON_EXPORT: /* エクスポート */ /* リスト中のキーワードをエクスポートする */ Export_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; // 独立ウィンドウで使用する case IDOK: EndDialog( hwndDlg, IDOK ); break; case IDCANCEL: EndDialog( hwndDlg, IDCANCEL ); break; } break; /* BN_CLICKED */ } } break; /* WM_COMMAND */ 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; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }