/* ダイアログデータの設定 */ 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; }
/*! 印字可能行数と桁数を計算 @date 2013.05.05 aroka OnTimerから移動 @retval 印字可能領域があれば TRUE // 2013.05.20 aroka */ BOOL CDlgPrintSetting::CalcPrintableLineAndColumn() { int nEnableColumns; /* 行あたりの文字数 */ int nEnableLines; /* 縦方向の行数 */ MYDEVMODE dmDummy; // 2003.05.18 かろと 型変更 short nPaperAllWidth; /* 用紙幅 */ short nPaperAllHeight; /* 用紙高さ */ PRINTSETTING* pPS; /* ダイアログデータの取得 */ GetData(); pPS = &m_PrintSettingArr[m_nCurrentPrintSetting]; dmDummy.dmFields = DM_PAPERSIZE | DMORIENT_LANDSCAPE; dmDummy.dmPaperSize = pPS->m_nPrintPaperSize; dmDummy.dmOrientation = pPS->m_nPrintPaperOrientation; /* 用紙の幅、高さ */ if( !CPrint::GetPaperSize( &nPaperAllWidth, &nPaperAllHeight, &dmDummy ) ){ // 2001.12.21 hor GetPaperSize失敗時はそのまま終了 // nPaperAllWidth = 210 * 10; /* 用紙幅 */ // nPaperAllHeight = 297 * 10; /* 用紙高さ */ return FALSE; } /* 行あたりの文字数(行番号込み) */ nEnableColumns = CPrint::CalculatePrintableColumns( pPS, nPaperAllWidth, pPS->m_bPrintLineNumber?m_nLineNumberColumns:0 ); /* 印字可能桁数/ページ */ /* 縦方向の行数 */ nEnableLines = CPrint::CalculatePrintableLines( pPS, nPaperAllHeight ); /* 印字可能行数/ページ */ ::SetDlgItemInt( GetHwnd(), IDC_STATIC_ENABLECOLUMNS, nEnableColumns, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_STATIC_ENABLELINES, nEnableLines, FALSE ); // フォントのポイント数 2013/5/9 Uchi // 1pt = 1/72in = 25.4/72mm int nFontPoints = pPS->m_nPrintFontHeight * 720 / 254; TCHAR szFontPoints[20]; auto_sprintf_s( szFontPoints, _countof(szFontPoints), _T("%d.%dpt"), nFontPoints/10, nFontPoints%10 ); ::DlgItem_SetText( GetHwnd(), IDC_STATIC_FONTSIZE, szFontPoints ); // 印字可能領域がない場合は OK を押せなくする 2013.5.10 aroka if( nEnableColumns == 0 || nEnableLines == 0 ){ ::EnableWindow( GetItemHwnd( IDOK ), FALSE ); return FALSE; }else{ ::EnableWindow( GetItemHwnd( IDOK ), TRUE ); return TRUE; } }
int CHokanMgr::KeyProc( WPARAM wParam, LPARAM lParam ) { WORD vkey; vkey = LOWORD(wParam); // virtual-key code // MYTRACE( _T("CHokanMgr::OnVKeyToItem vkey=%xh\n"), vkey ); switch( vkey ){ case VK_HOME: case VK_END: case VK_UP: case VK_DOWN: case VK_PRIOR: case VK_NEXT: /* リストボックスのデフォルトの動作をさせる */ ::CallWindowProc( (WNDPROC)gm_wpHokanListProc, GetItemHwnd( IDC_LIST_WORDS ), WM_KEYDOWN, wParam, lParam ); return -1; case VK_RETURN: case VK_TAB: case VK_RIGHT: #if 0 case VK_SPACE: #endif /* 補完実行 */ if( DoHokan( vkey ) ){ return -1; }else{ return -2; } case VK_ESCAPE: case VK_LEFT: return -2; } return -2; }
/* 補完実行 */ BOOL CHokanMgr::DoHokan( int nVKey ) { DEBUG_TRACE( _T("CHokanMgr::DoHokan( nVKey==%xh )\n"), nVKey ); /* 補完候補決定キー */ if( VK_RETURN == nVKey && !m_pShareData->m_Common.m_sHelper.m_bHokanKey_RETURN ) return FALSE;/* VK_RETURN 補完決定キーが有効/無効 */ if( VK_TAB == nVKey && !m_pShareData->m_Common.m_sHelper.m_bHokanKey_TAB ) return FALSE;/* VK_TAB 補完決定キーが有効/無効 */ if( VK_RIGHT == nVKey && !m_pShareData->m_Common.m_sHelper.m_bHokanKey_RIGHT ) return FALSE;/* VK_RIGHT 補完決定キーが有効/無効 */ HWND hwndList; int nItem; CEditView* pcEditView; hwndList = GetItemHwnd( IDC_LIST_WORDS ); nItem = List_GetCurSel( hwndList ); if( LB_ERR == nItem ){ return FALSE; } int nLabelLen = List_GetTextLen( hwndList, nItem ); auto wszLabel = std::make_unique<WCHAR[]>(nLabelLen + 1); List_GetText( hwndList, nItem, &wszLabel[0] ); /* テキストを貼り付け */ pcEditView = reinterpret_cast<CEditView*>(m_lParam); // Apr. 28, 2000 genta pcEditView->GetCommander().HandleCommand( F_WordDeleteToStart, false, 0, 0, 0, 0 ); pcEditView->GetCommander().HandleCommand( F_INSTEXT_W, true, (LPARAM)&wszLabel[0], wcslen(&wszLabel[0]), TRUE, 0 ); // Until here // pcEditView->GetCommander().HandleCommand( F_INSTEXT_W, true, (LPARAM)(wszLabel + m_cmemCurWord.GetLength()), TRUE, 0, 0 ); Hide(); return TRUE; }
BOOL CHokanMgr::OnSize( WPARAM wParam, LPARAM lParam ) { /* 基底クラスメンバ */ CDialog::OnSize( wParam, lParam ); int Controls[] = { IDC_LIST_WORDS }; int nControls = _countof( Controls ); int nWidth; int nHeight; int i; RECT rc; HWND hwndCtrl; POINT po; RECT rcDlg; ::GetClientRect( GetHwnd(), &rcDlg ); nWidth = rcDlg.right - rcDlg.left; // width of client area nHeight = rcDlg.bottom - rcDlg.top; // height of client area // 2001/06/18 Start by asa-o: サイズ変更後の位置を保存 m_poWin.x = rcDlg.left - 4; m_poWin.y = rcDlg.top - 3; ::ClientToScreen(GetHwnd(),&m_poWin); // 2001/06/18 End for ( i = 0; i < nControls; ++i ){ hwndCtrl = GetItemHwnd( Controls[i] ); ::GetWindowRect( hwndCtrl, &rc ); po.x = rc.left; po.y = rc.top; ::ScreenToClient( GetHwnd(), &po ); rc.left = po.x; rc.top = po.y; po.x = rc.right; po.y = rc.bottom; ::ScreenToClient( GetHwnd(), &po ); rc.right = po.x; rc.bottom = po.y; if( Controls[i] == IDC_LIST_WORDS ){ ::SetWindowPos( hwndCtrl, NULL, rc.left, rc.top, nWidth - rc.left * 2, nHeight - rc.top * 2/* - 20*/, SWP_NOOWNERZORDER | SWP_NOZORDER ); } } // 2001/06/18 asa-o: ShowTip(); // 補完ウィンドウで選択中の単語にキーワードヘルプを表示 return TRUE; }
BOOL CDlgPrintSetting::OnDestroy( void ) { ::KillTimer( GetHwnd(), IDT_PRINTSETTING ); // フォントの破棄 HFONT hFontOld; hFontOld = (HFONT)::SendMessage(GetItemHwnd( IDC_STATIC_FONT_HEAD ), WM_GETFONT, 0, 0 ); if (m_hFontDlg != hFontOld) { ::DeleteObject( hFontOld ); } hFontOld = (HFONT)::SendMessage(GetItemHwnd( IDC_STATIC_FONT_FOOT ), WM_GETFONT, 0, 0 ); if (m_hFontDlg != hFontOld) { ::DeleteObject( hFontOld ); } /* 基底クラスメンバ */ return CDialog::OnDestroy(); }
/* モードレスダイアログの表示 */ HWND CHokanMgr::DoModeless( HINSTANCE hInstance , HWND hwndParent, LPARAM lParam ) { HWND hwndWork; hwndWork = CDialog::DoModeless( hInstance, hwndParent, IDD_HOKAN, lParam, SW_HIDE ); ::SetFocus( ((CEditView*)m_lParam)->GetHwnd() ); //エディタにフォーカスを戻す OnSize( 0, 0 ); /* リストをフック */ // Modified by KEITA for WIN64 2003.9.6 ::gm_wpHokanListProc = (WNDPROC) ::SetWindowLongPtr( GetItemHwnd( IDC_LIST_WORDS ), GWLP_WNDPROC, (LONG_PTR)HokanList_SubclassProc ); return hwndWork; }
// フォント名/使用ボタンの設定 void CDlgPrintSetting::SetFontName( int idTxt, int idUse, LOGFONT& lf, int nPointSize ) { TCHAR szName[100]; bool bUseFont = lf.lfFaceName[0] != _T('\0'); CheckDlgButtonBool( GetHwnd(), idUse, bUseFont); ::EnableWindow( GetItemHwnd( idUse ), bUseFont ); if (bUseFont) { LOGFONT lft; lft = lf; lft.lfHeight = m_nFontHeight; // フォントサイズをダイアログに合せる HFONT hFontOld = (HFONT)::SendMessage(GetItemHwnd( idTxt ), WM_GETFONT, 0, 0 ); // 論理フォントを作成 HFONT hFont = ::CreateFontIndirect( &lft ); if (hFont) { // フォントの設定 ::SendMessage( GetItemHwnd( idTxt ), WM_SETFONT, (WPARAM)hFont, MAKELPARAM(FALSE, 0) ); } if (m_hFontDlg != hFontOld) { // 古いフォントの破棄 ::DeleteObject( hFontOld ); } // フォント名/サイズの作成 int nMM = MulDiv( nPointSize, 254, 720 ); // フォントサイズ計算(pt->1/10mm) auto_sprintf(szName, nPointSize%10 ? _T("%.32s(%.1fpt/%d.%dmm)") : _T("%.32s(%.0fpt/%d.%dmm)"), lf.lfFaceName, double(nPointSize)/10, nMM/10, nMM/10); } else { szName[0] = _T('\0'); } ::DlgItem_SetText( GetHwnd(), idTxt, szName ); }
BOOL CDlgPrintSetting::OnInitDialog( HWND hwndDlg, WPARAM wParam, LPARAM lParam ) { _SetHwnd( hwndDlg ); /* コンボボックスのユーザー インターフェイスを拡張インターフェースにする */ Combo_SetExtendedUI( GetItemHwnd( IDC_COMBO_SETTINGNAME ), TRUE ); Combo_SetExtendedUI( GetItemHwnd( IDC_COMBO_FONT_HAN ), TRUE ); Combo_SetExtendedUI( GetItemHwnd( IDC_COMBO_FONT_ZEN ), TRUE ); Combo_SetExtendedUI( GetItemHwnd( IDC_COMBO_PAPER ), TRUE ); // タイマーでの更新をやめて、能動的に更新要求する 2013.5.5 aroka // CDialog::OnInitDialogの奥でOnChangeSettingTypeが呼ばれるのでここでは更新要求しない // ::SetTimer( GetHwnd(), IDT_PRINTSETTING, 500, NULL ); //UpdatePrintableLineAndColumn(); // ダイアログのフォントの取得 m_hFontDlg = (HFONT)::SendMessage( GetHwnd(), WM_GETFONT, 0, 0 ); // ダイアログのフォント LOGFONT lf; ::GetObject(m_hFontDlg, sizeof(LOGFONT), &lf); m_nFontHeight = lf.lfHeight; // フォントサイズ /* 基底クラスメンバ */ return CDialog::OnInitDialog( GetHwnd(), wParam, lParam ); }
BOOL CDlgGrep::OnInitDialog( HWND hwndDlg, WPARAM wParam, LPARAM lParam ) { _SetHwnd( hwndDlg ); /* ユーザーがコンボボックスのエディット コントロールに入力できるテキストの長さを制限する */ // Combo_LimitText( ::GetDlgItem( GetHwnd(), IDC_COMBO_TEXT ), _MAX_PATH - 1 ); Combo_LimitText( ::GetDlgItem( GetHwnd(), IDC_COMBO_FILE ), _MAX_PATH - 1 ); Combo_LimitText( ::GetDlgItem( GetHwnd(), IDC_COMBO_FOLDER ), _MAX_PATH - 1 ); /* コンボボックスのユーザー インターフェイスを拡張インターフェースにする */ Combo_SetExtendedUI( ::GetDlgItem( GetHwnd(), IDC_COMBO_TEXT ), TRUE ); Combo_SetExtendedUI( ::GetDlgItem( GetHwnd(), IDC_COMBO_FILE ), TRUE ); Combo_SetExtendedUI( ::GetDlgItem( GetHwnd(), IDC_COMBO_FOLDER ), TRUE ); /* ダイアログのアイコン */ //2002.02.08 Grepアイコンも大きいアイコンと小さいアイコンを別々にする。 HICON hIconBig, hIconSmall; // Dec, 2, 2002 genta アイコン読み込み方法変更 hIconBig = GetAppIcon( m_hInstance, ICON_DEFAULT_GREP, FN_GREP_ICON, false ); hIconSmall = GetAppIcon( m_hInstance, ICON_DEFAULT_GREP, FN_GREP_ICON, true ); ::SendMessageAny( GetHwnd(), WM_SETICON, ICON_SMALL, (LPARAM)hIconSmall ); ::SendMessageAny( GetHwnd(), WM_SETICON, ICON_BIG, (LPARAM)hIconBig ); // 2002/09/22 Moca Add int i; /* 文字コードセット選択コンボボックス初期化 */ CCodeTypesForCombobox cCodeTypes; for( i = 0; i < cCodeTypes.GetCount(); ++i ){ int idx = Combo_AddString( ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ), cCodeTypes.GetName(i) ); Combo_SetItemData( ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ), idx, cCodeTypes.GetCode(i) ); } // 2007.02.09 bosagami HWND hFolder = ::GetDlgItem( GetHwnd(), IDC_COMBO_FOLDER ); DragAcceptFiles(hFolder, true); g_pOnFolderProc = (WNDPROC)GetWindowLongPtr(hFolder, GWLP_WNDPROC); SetWindowLongPtr(hFolder, GWLP_WNDPROC, (LONG_PTR)OnFolderProc); m_comboDelText = SComboBoxItemDeleter(); m_comboDelText.pRecent = &m_cRecentSearch; SetComboBoxDeleter(GetItemHwnd(IDC_COMBO_TEXT), &m_comboDelText); m_comboDelFile = SComboBoxItemDeleter(); m_comboDelFile.pRecent = &m_cRecentGrepFile; SetComboBoxDeleter(GetItemHwnd(IDC_COMBO_FILE), &m_comboDelFile); m_comboDelFolder = SComboBoxItemDeleter(); m_comboDelFolder.pRecent = &m_cRecentGrepFolder; SetComboBoxDeleter(GetItemHwnd(IDC_COMBO_FOLDER), &m_comboDelFolder); // フォント設定 2012/11/27 Uchi HFONT hFontOld = (HFONT)::SendMessageAny( GetItemHwnd( IDC_COMBO_TEXT ), WM_GETFONT, 0, 0 ); HFONT hFont = SetMainFont( GetItemHwnd( IDC_COMBO_TEXT ) ); m_cFontText.SetFont( hFontOld, hFont, GetItemHwnd( IDC_COMBO_TEXT ) ); /* 基底クラスメンバ */ // CreateSizeBox(); return CDialog::OnInitDialog( hwndDlg, wParam, lParam ); }
BOOL CDlgCompare::OnSize( WPARAM wParam, LPARAM lParam ) { /* 基底クラスメンバ */ CDialog::OnSize( wParam, lParam ); ::GetWindowRect( GetHwnd(), &GetDllShareData().m_Common.m_sOthers.m_rcCompareDialog ); RECT rc; POINT ptNew; ::GetWindowRect( GetHwnd(), &rc ); ptNew.x = rc.right - rc.left; ptNew.y = rc.bottom - rc.top; for( int i = 0 ; i < _countof(anchorList); i++ ){ ResizeItem( GetItemHwnd(anchorList[i].id), m_ptDefaultSize, ptNew, m_rcItems[i], anchorList[i].anchor ); } ::InvalidateRect( GetHwnd(), NULL, TRUE ); return TRUE; }
// 2001/06/18 Start by asa-o: 補完ウィンドウで選択中の単語にキーワードヘルプを表示 void CHokanMgr::ShowTip() { INT nItem, nTopItem, nItemHeight; POINT point; CEditView* pcEditView; HWND hwndCtrl; RECT rcHokanWin; hwndCtrl = GetItemHwnd( IDC_LIST_WORDS ); nItem = List_GetCurSel( hwndCtrl ); if( LB_ERR == nItem ) return ; int nLabelLen = List_GetTextLen( hwndCtrl, nItem ); auto szLabel = std::make_unique<WCHAR[]>(nLabelLen + 1); List_GetText( hwndCtrl, nItem, &szLabel[0] ); // 選択中の単語を取得 pcEditView = reinterpret_cast<CEditView*>(m_lParam); // すでに辞書Tipが表示されていたら if( pcEditView->m_dwTipTimer == 0 ) { // 辞書Tipを消す pcEditView -> m_cTipWnd.Hide(); pcEditView -> m_dwTipTimer = ::GetTickCount(); } // 表示する位置を決定 nTopItem = List_GetTopIndex( hwndCtrl ); nItemHeight = List_GetItemHeight( hwndCtrl, 0 ); point.x = m_poWin.x + m_nWidth; point.y = m_poWin.y + 4 + (nItem - nTopItem) * nItemHeight; // 2001/06/19 asa-o 選択中の単語が補完ウィンドウに表示されているなら辞書Tipを表示 if( point.y > m_poWin.y && point.y < m_poWin.y + m_nHeight ) { ::SetRect( &rcHokanWin , m_poWin.x, m_poWin.y, m_poWin.x + m_nWidth, m_poWin.y + m_nHeight ); if( !pcEditView -> ShowKeywordHelp( point, &szLabel[0], &rcHokanWin ) ) pcEditView -> m_dwTipTimer = ::GetTickCount(); // 表示するべきキーワードヘルプが無い } }
/*! 現在編集中ファイルから検索チェックでの設定 */ void CDlgGrep::SetDataFromThisText( bool bChecked ) { BOOL bEnableControls = TRUE; if( 0 != m_szCurrentFilePath[0] && bChecked ){ TCHAR szWorkFolder[MAX_PATH]; TCHAR szWorkFile[MAX_PATH]; // 2003.08.01 Moca ファイル名はスペースなどは区切り記号になるので、""で囲い、エスケープする szWorkFile[0] = _T('"'); SplitPath_FolderAndFile( m_szCurrentFilePath, szWorkFolder, szWorkFile + 1 ); _tcscat( szWorkFile, _T("\"") ); // 2003.08.01 Moca ::DlgItem_SetText( GetHwnd(), IDC_COMBO_FILE, szWorkFile ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); ::CheckDlgButton( GetHwnd(), IDC_CHK_SUBFOLDER, BST_UNCHECKED ); bEnableControls = FALSE; } ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_COMBO_FILE ), bEnableControls ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_COMBO_FOLDER ), bEnableControls ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_BUTTON_FOLDER ), bEnableControls ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_SUBFOLDER ), bEnableControls ); return; }
/* TRUE==正常 FALSE==入力エラー */ int CDlgGrep::GetData( void ) { /* サブフォルダからも検索する*/ m_bSubFolder = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_SUBFOLDER ); m_pShareData->m_Common.m_sSearch.m_bGrepSubFolder = m_bSubFolder; /* Grep:サブフォルダも検索 */ /* この編集中のテキストから検索する */ m_bFromThisText = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_FROMTHISTEXT ); /* 英大文字と英小文字を区別する */ m_sSearchOption.bLoHiCase = (0!=::IsDlgButtonChecked( GetHwnd(), IDC_CHK_LOHICASE )); //2001/06/23 N.Nakatani /* 単語単位で検索 */ m_sSearchOption.bWordOnly = (0!=::IsDlgButtonChecked( GetHwnd(), IDC_CHK_WORD )); /* 正規表現 */ m_sSearchOption.bRegularExp = (0!=::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP )); /* 文字コード自動判別 */ // m_bKanjiCode_AutoDetect = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_KANJICODEAUTODETECT ); /* 文字コードセット */ { int nIdx; HWND hWndCombo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); nIdx = Combo_GetCurSel( hWndCombo ); m_nGrepCharSet = (ECodeType)Combo_GetItemData( hWndCombo, nIdx ); } /* 行を出力/該当部分/否マッチ行 を出力 */ if( ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTLINE ) ){ m_nGrepOutputLineType = 1; }else if( ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_NOHIT ) ){ m_nGrepOutputLineType = 2; }else{ m_nGrepOutputLineType = 0; } /* Grep: 出力形式 */ if( FALSE != ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTSTYLE1 ) ){ m_nGrepOutputStyle = 1; /* Grep: 出力形式 */ } if( FALSE != ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTSTYLE2 ) ){ m_nGrepOutputStyle = 2; /* Grep: 出力形式 */ } if( FALSE != ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTSTYLE3 ) ){ m_nGrepOutputStyle = 3; } m_bGrepOutputFileOnly = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_FILE_ONLY ); m_bGrepOutputBaseFolder = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_BASE_PATH ); m_bGrepSeparateFolder = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_SEP_FOLDER ); /* 検索文字列 */ int nBufferSize = ::GetWindowTextLength( GetItemHwnd(IDC_COMBO_TEXT) ) + 1; std::vector<TCHAR> vText(nBufferSize); ::DlgItem_GetText( GetHwnd(), IDC_COMBO_TEXT, &vText[0], nBufferSize); m_strText = to_wchar(&vText[0]); m_bSetText = true; /* 検索ファイル */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FILE, m_szFile, _countof2(m_szFile) ); /* 検索フォルダ */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FOLDER, m_szFolder, _countof2(m_szFolder) ); m_pShareData->m_Common.m_sSearch.m_nGrepCharSet = m_nGrepCharSet; // 文字コード自動判別 m_pShareData->m_Common.m_sSearch.m_nGrepOutputLineType = m_nGrepOutputLineType; // 行を出力/該当部分/否マッチ行 を出力 m_pShareData->m_Common.m_sSearch.m_nGrepOutputStyle = m_nGrepOutputStyle; // Grep: 出力形式 m_pShareData->m_Common.m_sSearch.m_bGrepOutputFileOnly = m_bGrepOutputFileOnly; m_pShareData->m_Common.m_sSearch.m_bGrepOutputBaseFolder = m_bGrepOutputBaseFolder; m_pShareData->m_Common.m_sSearch.m_bGrepSeparateFolder = m_bGrepSeparateFolder; //やめました // if( 0 == wcslen( m_szText ) ){ // WarningMessage( GetHwnd(), _T("検索のキーワードを指定してください。") ); // return FALSE; // } if( 0 != auto_strlen( m_szFile ) ){ CGrepEnumKeys enumKeys; int nErrorNo = enumKeys.SetFileKeys( m_szFile ); if( 1 == nErrorNo ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP2) ); return FALSE; }else if( nErrorNo == 2 ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP3) ); return FALSE; } } /* この編集中のテキストから検索する */ if( m_szFile[0] == _T('\0') ){ // Jun. 16, 2003 Moca // 検索パターンが指定されていない場合のメッセージ表示をやめ、 // 「*.*」が指定されたものと見なす. _tcscpy( m_szFile, _T("*.*") ); } if( m_szFolder[0] == _T('\0') ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP4) ); return FALSE; } { //カレントディレクトリを保存。このブロックから抜けるときに自動でカレントディレクトリは復元される。 CCurrentDirectoryBackupPoint cCurDirBackup; // 2011.11.24 Moca 複数フォルダ指定 std::vector<std::tstring> vPaths; CGrepAgent::CreateFolders( m_szFolder, vPaths ); int nFolderLen = 0; TCHAR szFolder[_MAX_PATH]; szFolder[0] = _T('\0'); for( int i = 0 ; i < (int)vPaths.size(); i ++ ){ // 相対パス→絶対パス if( !::SetCurrentDirectory( vPaths[i].c_str() ) ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP5) ); return FALSE; } TCHAR szFolderItem[_MAX_PATH]; ::GetCurrentDirectory( _MAX_PATH, szFolderItem ); // ;がフォルダ名に含まれていたら""で囲う if( auto_strchr( szFolderItem, _T(';') ) ){ szFolderItem[0] = _T('"'); ::GetCurrentDirectory( _MAX_PATH, szFolderItem + 1 ); auto_strcat(szFolderItem, _T("\"")); } int nFolderItemLen = auto_strlen( szFolderItem ); if( _MAX_PATH < nFolderLen + nFolderItemLen + 1 ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP6) ); return FALSE; } if( i ){ auto_strcat( szFolder, _T(";") ); } auto_strcat( szFolder, szFolderItem ); nFolderLen = auto_strlen( szFolder ); } auto_strcpy( m_szFolder, szFolder ); } //@@@ 2002.2.2 YAZAKI CShareData.AddToSearchKeyArr()追加に伴う変更 /* 検索文字列 */ if( 0 < m_strText.size() ){ // From Here Jun. 26, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し int nFlag = 0; nFlag |= m_sSearchOption.bLoHiCase ? 0x01 : 0x00; if( m_sSearchOption.bRegularExp && !CheckRegexpSyntax( m_strText.c_str(), GetHwnd(), true, nFlag) ){ return FALSE; } // To Here Jun. 26, 2001 genta 正規表現ライブラリ差し替え if( m_strText.size() < _MAX_PATH ){ CSearchKeywordManager().AddToSearchKeyArr( m_strText.c_str() ); m_pShareData->m_Common.m_sSearch.m_sSearchOption = m_sSearchOption; // 検索オプション } }else{ // 2014.07.01 空キーも登録する CSearchKeywordManager().AddToSearchKeyArr( L"" ); } // この編集中のテキストから検索する場合、履歴に残さない Uchi 2008/5/23 if (!m_bFromThisText) { /* 検索ファイル */ CSearchKeywordManager().AddToGrepFileArr( m_szFile ); /* 検索フォルダ */ CSearchKeywordManager().AddToGrepFolderArr( m_szFolder ); } return TRUE; }
/* ダイアログデータの設定 */ 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; }
BOOL CDlgGrep::OnBnClicked( int wID ) { switch( wID ){ case IDC_BUTTON_HELP: /* 「Grep」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_GREP_DIALOG) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDC_CHK_FROMTHISTEXT: /* この編集中のテキストから検索する */ // 2010.05.30 関数化 SetDataFromThisText( 0 != ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_FROMTHISTEXT ) ); return TRUE; case IDC_BUTTON_CURRENTFOLDER: /* 現在編集中のファイルのフォルダ */ /* ファイルを開いているか */ if( 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 ); } else{ /* 現在のプロセスのカレントディレクトリを取得します */ TCHAR szWorkFolder[MAX_PATH]; ::GetCurrentDirectory( _countof( szWorkFolder ) - 1, szWorkFolder ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); } return TRUE; case IDC_BUTTON_FOLDER_UP: { HWND hwnd = GetItemHwnd( IDC_COMBO_FOLDER ); TCHAR szFolder[_MAX_PATH]; ::GetWindowText( hwnd, szFolder, _countof(szFolder) ); std::vector<std::tstring> vPaths; CGrepAgent::CreateFolders( szFolder, vPaths ); if( 0 < vPaths.size() ){ // 最後のパスが操作対象 auto_strncpy( szFolder, vPaths.rbegin()->c_str(), _MAX_PATH ); szFolder[_MAX_PATH-1] = _T('\0'); if( DirectoryUp( szFolder ) ){ *(vPaths.rbegin()) = szFolder; szFolder[0] = _T('\0'); for( int i = 0 ; i < (int)vPaths.size(); i++ ){ TCHAR szFolderItem[_MAX_PATH]; auto_strncpy( szFolderItem, vPaths[i].c_str(), _MAX_PATH ); szFolderItem[_MAX_PATH-1] = _T('\0'); if( auto_strchr( szFolderItem, _T(';') ) ){ szFolderItem[0] = _T('"'); auto_strncpy( szFolderItem + 1, vPaths[i].c_str(), _MAX_PATH - 1 ); szFolderItem[_MAX_PATH-1] = _T('\0'); auto_strcat( szFolderItem, _T("\"") ); szFolderItem[_MAX_PATH-1] = _T('\0'); } if( i ){ auto_strcat( szFolder, _T(";") ); szFolder[_MAX_PATH-1] = _T('\0'); } auto_strcat_s( szFolder, _MAX_PATH, szFolderItem ); } ::SetWindowText( hwnd, szFolder ); } } } return TRUE; // case IDC_CHK_LOHICASE: /* 英大文字と英小文字を区別する */ // MYTRACE( _T("IDC_CHK_LOHICASE\n") ); // return TRUE; case IDC_CHK_REGULAREXP: /* 正規表現 */ // MYTRACE( _T("IDC_CHK_REGULAREXP ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) = %d\n"), ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) ); if( ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) ){ // From Here Jun. 26, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し if( !CheckRegexpVersion( GetHwnd(), IDC_STATIC_JRE32VER, true ) ){ ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 0 ); }else{ // To Here Jun. 26, 2001 genta /* 英大文字と英小文字を区別する */ // 正規表現のときも選択できるように。 // ::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{ /* 英大文字と英小文字を区別する */ // 正規表現のときも選択できるように。 // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_LOHICASE ), TRUE ); // ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, 0 ); //2001/06/23 N.Nakatani //単語単位のgrepが実装されたらコメントを外すと思います //2002/03/07実装してみた。 /* 単語単位で検索 */ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ), TRUE ); } return TRUE; case IDC_BUTTON_FOLDER: /* フォルダ参照ボタン */ { TCHAR szFolder[MAX_PATH]; /* 検索フォルダ */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FOLDER, szFolder, _MAX_PATH - 1 ); if( szFolder[0] == _T('\0') ){ ::GetCurrentDirectory( _countof( szFolder ), szFolder ); } if( SelectDir( GetHwnd(), LS(STR_DLGGREP1), szFolder, szFolder ) ){ SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szFolder ); } } return TRUE; case IDC_CHECK_CP: { if( IsDlgButtonChecked( GetHwnd(), IDC_CHECK_CP ) ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_CP ), FALSE ); HWND combo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); CCodePage::AddComboCodePages(GetHwnd(), combo, -1); } } return TRUE; case IDC_CHK_DEFAULTFOLDER: /* フォルダの初期値をカレントフォルダにする */ { m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_DEFAULTFOLDER ); } return TRUE; case IDC_RADIO_OUTPUTSTYLE3: { ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),FALSE ); } break; case IDC_RADIO_OUTPUTSTYLE1: case IDC_RADIO_OUTPUTSTYLE2: { ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),TRUE ); } break; case IDOK: /* ダイアログデータの取得 */ if( GetData() ){ // ::EndDialog( hwndDlg, TRUE ); CloseDialog( TRUE ); } return TRUE; case IDCANCEL: // ::EndDialog( hwndDlg, FALSE ); CloseDialog( FALSE ); return TRUE; } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
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 ); }
// 行数と桁数の更新を要求(メッセージキューにポストする) // ダイアログ初期化の途中で EN_CHANGE に反応すると計算がおかしくなるため、関数呼び出しではなくPostMessageで処理 2013.5.5 aroka void CDlgPrintSetting::UpdatePrintableLineAndColumn() { m_bPrintableLinesAndColumnInvalid = true; ::PostMessageA( GetHwnd(), WM_COMMAND, MAKELONG( IDC_STATIC_ENABLECOLUMNS, STN_CLICKED ), (LPARAM)GetItemHwnd( IDC_STATIC_ENABLECOLUMNS ) ); }
/*! 初期化 pcmemHokanWord == NULLのとき、補完候補がひとつだったら、補完ウィンドウを表示しないで終了します。 Search()呼び出し元で確定処理を進めてください。 @date 2002.2.17 YAZAKI CShareDataのインスタンスは、CProcessにひとつあるのみ。 */ int CHokanMgr::Search( POINT* ppoWin, int nWinHeight, int nColumnWidth, const wchar_t* pszCurWord, const TCHAR* pszHokanFile, bool bHokanLoHiCase, // 入力補完機能:英大文字小文字を同一視する 2001/06/19 asa-o bool bHokanByFile, // 編集中データから候補を探す 2003.06.23 Moca int nHokanType, bool bHokanByKeyword, CNativeW* pcmemHokanWord // 2001/06/19 asa-o ) { CEditView* pcEditView = reinterpret_cast<CEditView*>(m_lParam); /* 共有データ構造体のアドレスを返す */ m_pShareData = &GetDllShareData(); /* || 補完キーワードの検索 || || ・見つかった候補をすべて返す(改行で区切って返す) || ・指定された候補の最大数を超えると処理を中断する || ・見つかった数を返す || */ m_vKouho.clear(); CDicMgr::HokanSearch( pszCurWord, bHokanLoHiCase, // 引数からに変更 2001/06/19 asa-o m_vKouho, 0, //Max候補数 pszHokanFile ); // 2003.05.16 Moca 追加 編集中データ内から候補を探す if( bHokanByFile ){ pcEditView->HokanSearchByFile( pszCurWord, bHokanLoHiCase, m_vKouho, 1024 // 編集中データからなので数を制限しておく ); } // 2012.10.13 Moca 強調キーワードから候補を探す if( bHokanByKeyword ){ HokanSearchByKeyword( pszCurWord, bHokanLoHiCase, m_vKouho ); } { int nOption = ( (bHokanLoHiCase ? 0x01 : 0) | (bHokanByFile ? 0x02 : 0) ); CPlug::Array plugs; CPlug::Array plugType; CJackManager::getInstance()->GetUsablePlug( PP_COMPLEMENTGLOBAL, 0, &plugs ); if( nHokanType != 0 ){ CJackManager::getInstance()->GetUsablePlug( PP_COMPLEMENT, nHokanType, &plugType ); if( 0 < plugType.size() ){ plugs.push_back( plugType[0] ); } } for( auto it = plugs.begin(); it != plugs.end(); ++it ){ //インタフェースオブジェクト準備 CWSHIfObj::List params; std::wstring curWord = pszCurWord; CComplementIfObj* objComp = new CComplementIfObj( curWord , this, nOption ); objComp->AddRef(); params.push_back( objComp ); //プラグイン呼び出し (*it)->Invoke( pcEditView, params ); objComp->Release(); } } if( 0 == m_vKouho.size() ){ m_nCurKouhoIdx = -1; return 0; } // 2001/06/19 asa-o 候補が1つの場合補完ウィンドウは表示しない(逐次補完の場合は除く) if( 1 == m_vKouho.size() ){ if(pcmemHokanWord != NULL){ m_nCurKouhoIdx = -1; pcmemHokanWord->SetString( m_vKouho[0].c_str() ); return 1; } } // m_hFont = hFont; m_poWin.x = ppoWin->x; m_poWin.y = ppoWin->y; m_nWinHeight = nWinHeight; m_nColumnWidth = nColumnWidth; // m_cmemCurWord.SetData( pszCurWord, lstrlen( pszCurWord ) ); m_cmemCurWord.SetString( pszCurWord ); m_nCurKouhoIdx = 0; // SetCurKouhoStr(); // ::ShowWindow( GetHwnd(), SW_SHOWNA ); HWND hwndList; hwndList = GetItemHwnd( IDC_LIST_WORDS ); List_ResetContent( hwndList ); { size_t kouhoNum = m_vKouho.size(); for( size_t i = 0; i < kouhoNum; ++i ){ ::List_AddString( hwndList, m_vKouho[i].c_str() ); } } List_SetCurSel( hwndList, 0 ); //@@ ::EnableWindow( ::GetParent( ::GetParent( m_hwndParent ) ), FALSE ); int nX; int nY; int nCX; int nCY; RECT rcDesktop; // May 01, 2004 genta マルチモニタ対応 ::GetMonitorWorkRect( GetHwnd(), &rcDesktop ); nX = m_poWin.x - m_nColumnWidth; nY = m_poWin.y + m_nWinHeight + 4; nCX = m_nWidth; nCY = m_nHeight; /* 下に入るなら */ if( nY + nCY < rcDesktop.bottom ){ /* 何もしない */ }else /* 上に入るなら */ if( rcDesktop.top < m_poWin.y - m_nHeight - 4 ){ /* 上に出す */ nY = m_poWin.y - m_nHeight - 4; }else /* 上に出すか下に出すか(広いほうに出す) */ if( rcDesktop.bottom - nY > m_poWin.y ){ /* 下に出す */ // m_nHeight = rcDesktop.bottom - nY; nCY = rcDesktop.bottom - nY; }else{ /* 上に出す */ nY = rcDesktop.top; nCY = m_poWin.y - 4 - rcDesktop.top; } // 2001/06/19 Start by asa-o: 表示位置補正 // 右に入る if(nX + nCX < rcDesktop.right ){ // そのまま }else // 左に入る if(rcDesktop.left < nX - nCX + 8){ // 左に表示 nX -= nCX - 8; }else{ // サイズを調整して右に表示 nCX = t_max((int)(rcDesktop.right - nX) , 100); // 最低サイズを100くらいに } // 2001/06/19 End // 2001/06/18 Start by asa-o: 補正後の位置・サイズを保存 m_poWin.x = nX; m_poWin.y = nY; m_nHeight = nCY; m_nWidth = nCX; // 2001/06/18 End /* はみ出すなら小さくする */ // if( rcDesktop.bottom < nY + nCY ){ // /* 下にはみ出す */ // if( m_poWin.y - 4 - nCY < 0 ){ // /* 上にはみ出す */ // /* →高さだけ調節 */ // nCY = rcDesktop.bottom - nY - 4; // }else{ // // } // // } ::MoveWindow( GetHwnd(), nX, nY, nCX, nCY, TRUE ); ::ShowWindow( GetHwnd(), SW_SHOWNA ); // 2001/06/18 asa-o: ShowTip(); // 補完ウィンドウで選択中の単語にキーワードヘルプを表示 // 2003.06.25 Moca 他のメソッドで使っていないので、とりあえず削除しておく int kouhoNum = m_vKouho.size(); m_vKouho.clear(); return kouhoNum; }
/* 設定のタイプが変わった */ 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; }
/* TRUE==正常 FALSE==入力エラー */ int CDlgPrintSetting::GetData( void ) { HWND hwndCtrl; int nIdx1; int nWork; /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_HAN ); nIdx1 = Combo_GetCurSel( hwndCtrl ); Combo_GetLBText( hwndCtrl, nIdx1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_ZEN ); nIdx1 = Combo_GetCurSel( hwndCtrl ); Combo_GetLBText( hwndCtrl, nIdx1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceZen ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_FONTHEIGHT, NULL, FALSE ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_LINESPACE, NULL, FALSE ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_DANSUU, NULL, FALSE ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_DANSPACE, NULL, FALSE ) * 10; /* 入力値(数値)のエラーチェックをして正しい値を返す */ nWork = DataCheckAndCorrect( IDC_EDIT_FONTHEIGHT, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight = nWork; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_FONTHEIGHT, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight, FALSE ); } m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontWidth = ( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight+1 ) / 2; nWork = DataCheckAndCorrect( IDC_EDIT_LINESPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing = nWork; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_LINESPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_DANSUU, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu = nWork; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSUU, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_DANSPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10, FALSE ); } /* 用紙サイズ一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_PAPER ); nIdx1 = Combo_GetCurSel( hwndCtrl ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperSize = (short)Combo_GetItemData( hwndCtrl, nIdx1 ); // 用紙の向き // 2006.08.14 Moca 用紙方向コンボボックスを廃止し、ボタンを有効化 if( IsDlgButtonCheckedBool( GetHwnd(), IDC_RADIO_PORTRAIT ) ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperOrientation = DMORIENT_PORTRAIT; }else{ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperOrientation = DMORIENT_LANDSCAPE; } m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINTY, NULL, FALSE ) * 10; m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINBY, NULL, FALSE ) * 10; m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINLX, NULL, FALSE ) * 10; m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINRX, NULL, FALSE ) * 10; /* 入力値(数値)のエラーチェックをして正しい値を返す */ nWork = DataCheckAndCorrect( IDC_EDIT_MARGINTY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINTY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_MARGINBY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINBY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_MARGINLX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINLX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_MARGINRX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINRX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10, FALSE ); } // 行番号を印刷 m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintLineNumber = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_LINENUMBER ); // 英文ワードラップ m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintWordWrap = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_WORDWRAP ); //行頭禁則 //@@@ 2002.04.09 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuHead = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKUHEAD ); //行末禁則 //@@@ 2002.04.09 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuTail = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKUTAIL ); //改行文字をぶら下げる //@@@ 2002.04.13 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuRet = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKURET ); //句読点をぶら下げる //@@@ 2002.04.17 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuKuto = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKUKUTO ); // カラー印刷 m_PrintSettingArr[m_nCurrentPrintSetting].m_bColorPrint = ( BST_CHECKED == ::IsDlgButtonChecked( GetHwnd(), IDC_CHECK_COLORPRINT ) ); //@@@ 2002.2.4 YAZAKI /* ヘッダー */ ::DlgItem_GetText( GetHwnd(), IDC_EDIT_HEAD1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[0], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_HEAD2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[1], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_HEAD3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[2], HEADER_MAX ); // 100文字で制限しないと。。。 /* フッター */ ::DlgItem_GetText( GetHwnd(), IDC_EDIT_FOOT1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[0], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_FOOT2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[1], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_FOOT3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[2], HEADER_MAX ); // 100文字で制限しないと。。。 // ヘッダフォント if (!IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_USE_FONT_HEAD )) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, 0, sizeof(LOGFONT) ); } // フッタフォント if (!IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_USE_FONT_FOOT )) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, 0, sizeof(LOGFONT) ); } return TRUE; }