📄 cproptypes.cpp
字号:
if( m_Types.m_bTabArrow ){
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_TABVIEWSTRING ), FALSE );
}
else {
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_TABVIEWSTRING ), TRUE );
}
// From Here 2001.12.03 hor
/* スペースの挿入 */
::CheckDlgButton( hwndDlg, IDC_CHECK_INS_SPACE, m_Types.m_bInsSpace );
// To Here 2001.12.03 hor
/* その他のインデント対象文字 */
::SetDlgItemText( hwndDlg, IDC_EDIT_INDENTCHARS, m_Types.m_szIndentChars );
/* アウトライン解析方法
2002.04.01 YAZAKI ルールファイル関連追加
*/
HWND hwndCombo;
int nSelPos;
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES );
::SendMessage( hwndCombo, CB_RESETCONTENT, 0, 0 );
nSelPos = 0;
for( i = 0; i < nOlmArrNum; ++i ){
::SendMessage( hwndCombo, CB_INSERTSTRING, i, (LPARAM)OlmArr[i].pszName );
if( OlmArr[i].nMethod == m_Types.m_nDefaultOutline ){ /* アウトライン解析方法 */
nSelPos = i;
}
}
// 2003.06.23 Moca ルールファイル名は使わなくてもセットしておく
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_OUTLINERULEFILE ), TRUE );
::SetDlgItemText( hwndDlg, IDC_EDIT_OUTLINERULEFILE, m_Types.m_szOutlineRuleFilename );
if( m_Types.m_nDefaultOutline == OUTLINE_FILE ){
::CheckDlgButton( hwndDlg, IDC_RADIO_OUTLINEDEFAULT, FALSE );
::CheckDlgButton( hwndDlg, IDC_RADIO_OUTLINERULEFILE, TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_RULEFILE_REF ), TRUE );
}else{
::CheckDlgButton( hwndDlg, IDC_RADIO_OUTLINEDEFAULT, TRUE );
::CheckDlgButton( hwndDlg, IDC_RADIO_OUTLINERULEFILE, FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_OUTLINERULEFILE ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_RULEFILE_REF ), FALSE );
::SendMessage( hwndCombo, CB_SETCURSEL, nSelPos, 0 );
}
/* インデント */
::CheckDlgButton( hwndDlg, IDC_CHECK_INDENT, m_Types.m_bAutoIndent );
/* 日本語空白もインデント */
::CheckDlgButton( hwndDlg, IDC_CHECK_INDENT_WSPACE, m_Types.m_bAutoIndent_ZENSPACE );
if( !m_Types.m_bAutoIndent ){
/* 日本語空白もインデント */
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_CHECK_INDENT_WSPACE ), FALSE );
}
/* スマートインデント種別 */
// HWND hwndCombo;
// int nSelPos;
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_SMARTINDENT );
::SendMessage( hwndCombo, CB_RESETCONTENT, 0, 0 );
nSelPos = 0;
for( i = 0; i < nSmartIndentArrNum; ++i ){
::SendMessage( hwndCombo, CB_INSERTSTRING, i, (LPARAM)SmartIndentArr[i].pszName );
if( SmartIndentArr[i].nMethod == m_Types.m_nSmartIndent ){ /* スマートインデント種別 */
nSelPos = i;
}
}
::SendMessage( hwndCombo, CB_SETCURSEL, nSelPos, 0 );
/* 折り返しは2行目以降を字下げ表示 */
// Oct. 1, 2002 genta コンボボックスに変更
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_INDENTLAYOUT );
::SendMessage( hwndCombo, CB_RESETCONTENT, 0, 0 );
nSelPos = 0;
for( i = 0; i < nIndentTypeArrNum; ++i ){
::SendMessage( hwndCombo, CB_INSERTSTRING, i, (LPARAM)IndentTypeArr[i].pszName );
if( IndentTypeArr[i].nMethod == m_Types.m_nIndentLayout ){ /* 折り返しインデント種別 */
nSelPos = i;
}
}
::SendMessage( hwndCombo, CB_SETCURSEL, nSelPos, 0 );
// From Here Nov. 20, 2000 genta
// IME入力モード
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_IMESTATE );
::SendMessage( hwndCombo, CB_RESETCONTENT, 0, 0 );
int ime = m_Types.m_nImeState >> 2;
nSelPos = 0;
for( i = 0; i < nImeStateArrNum; ++i ){
::SendMessage( hwndCombo, CB_INSERTSTRING, i, (LPARAM)ImeStateArr[i].pszName );
if( ImeStateArr[i].nMethod == ime ){ /* IME状態 */
nSelPos = i;
}
}
::SendMessage( hwndCombo, CB_SETCURSEL, nSelPos, 0 );
// IME ON/OFF制御
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_IMESWITCH );
::SendMessage( hwndCombo, CB_RESETCONTENT, 0, 0 );
ime = m_Types.m_nImeState & 3;
nSelPos = 0;
for( i = 0; i < nImeSwitchArrNum; ++i ){
::SendMessage( hwndCombo, CB_INSERTSTRING, i, (LPARAM)ImeSwitchArr[i].pszName );
if( ImeSwitchArr[i].nMethod == ime ){ /* IME状態 */
nSelPos = i;
}
}
::SendMessage( hwndCombo, CB_SETCURSEL, nSelPos, 0 );
// To Here Nov. 20, 2000 genta
/* 英文ワードラップをする */
::CheckDlgButton( hwndDlg, IDC_CHECK_WORDWRAP, m_Types.m_bWordWrap );
/* 禁則処理 */
{ //@@@ 2002.04.08 MIK start
::CheckDlgButton( hwndDlg, IDC_CHECK_KINSOKUHEAD, m_Types.m_bKinsokuHead ? TRUE : FALSE );
::CheckDlgButton( hwndDlg, IDC_CHECK_KINSOKUTAIL, m_Types.m_bKinsokuTail ? TRUE : FALSE );
::CheckDlgButton( hwndDlg, IDC_CHECK_KINSOKURET, m_Types.m_bKinsokuRet ? TRUE : FALSE ); /* 改行文字をぶら下げる */ //@@@ 2002.04.13 MIK
::CheckDlgButton( hwndDlg, IDC_CHECK_KINSOKUKUTO, m_Types.m_bKinsokuKuto ? TRUE : FALSE ); /* 句読点をぶら下げる */ //@@@ 2002.04.17 MIK
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUHEAD ), EM_LIMITTEXT, (WPARAM)(sizeof(m_Types.m_szKinsokuHead) - 1 ), 0 );
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUTAIL ), EM_LIMITTEXT, (WPARAM)(sizeof(m_Types.m_szKinsokuTail) - 1 ), 0 );
::SetDlgItemText( hwndDlg, IDC_EDIT_KINSOKUHEAD, m_Types.m_szKinsokuHead );
::SetDlgItemText( hwndDlg, IDC_EDIT_KINSOKUTAIL, m_Types.m_szKinsokuTail );
// if( m_Types.m_bKinsokuHead ){
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUHEAD ), TRUE );
// }else{
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUHEAD ), FALSE );
// }
// if( m_Types.m_bKinsokuTail ){
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUTAIL ), TRUE );
// }else{
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUTAIL ), FALSE );
// }
} //@@@ 2002.04.08 MIK end
// Sep. 10, 2002 genta
::CheckDlgButton( hwndDlg, IDC_CHCEK_DOCICON, m_Types.m_bUseDocumentIcon ? TRUE : FALSE );
return;
}
/* ダイアログデータの取得 p1 */
int CPropTypes::GetData_p1( HWND hwndDlg )
{
//#ifdef COMPILE_TAB_VIEW //@@@ 2001.03.16 by MIK
char szTab[8+1+1]; /* +1. happy */
int i;
//#endif
//@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正
// m_nPageNum = 0;
/* タイプ属性:名称 */
::GetDlgItemText( hwndDlg, IDC_EDIT_TYPENAME, m_Types.m_szTypeName, sizeof( m_Types.m_szTypeName ) );
/* タイプ属性:拡張子リスト */
::GetDlgItemText( hwndDlg, IDC_EDIT_TYPEEXTS, m_Types.m_szTypeExts, sizeof( m_Types.m_szTypeExts ) );
/* 折り返し文字数 */
m_Types.m_nMaxLineSize = ::GetDlgItemInt( hwndDlg, IDC_EDIT_MAXLINELEN, NULL, FALSE );
if( m_Types.m_nMaxLineSize < 10 ){
m_Types.m_nMaxLineSize = 10;
}
if( m_Types.m_nMaxLineSize > 10240 ){
m_Types.m_nMaxLineSize = 10240;
}
/* 文字の隙間 */
m_Types.m_nColmSpace = ::GetDlgItemInt( hwndDlg, IDC_EDIT_CHARSPACE, NULL, FALSE );
if( m_Types.m_nColmSpace < 0 ){
m_Types.m_nColmSpace = 0;
}
if( m_Types.m_nColmSpace > COLUMNSPACE_MAX ){ // Feb. 18, 2003 genta 最大値の定数化
m_Types.m_nColmSpace = COLUMNSPACE_MAX;
}
/* 行の隙間 */
m_Types.m_nLineSpace = ::GetDlgItemInt( hwndDlg, IDC_EDIT_LINESPACE, NULL, FALSE );
// From Here Oct. 8, 2000 JEPRO 行間も最小0まで設定できるように変更(昔に戻っただけ?)
// if( m_Types.m_nLineSpace < 1 ){
// m_Types.m_nLineSpace = 1;
// }
if( m_Types.m_nLineSpace < 0 ){
m_Types.m_nLineSpace = 0;
}
// To Here Oct. 8, 2000
if( m_Types.m_nLineSpace > LINESPACE_MAX ){ // Feb. 18, 2003 genta 最大値の定数化
m_Types.m_nLineSpace = LINESPACE_MAX;
}
/* その他のインデント対象文字 */
::GetDlgItemText( hwndDlg, IDC_EDIT_INDENTCHARS, m_Types.m_szIndentChars, sizeof( m_Types.m_szIndentChars ) - 1 );
/* TAB幅 */
m_Types.m_nTabSpace = ::GetDlgItemInt( hwndDlg, IDC_EDIT_TABSPACE, NULL, FALSE );
if( m_Types.m_nTabSpace < 1 ){
m_Types.m_nTabSpace = 1;
}
if( m_Types.m_nTabSpace > 64 ){
m_Types.m_nTabSpace = 64;
}
//#ifdef COMPILE_TAB_VIEW //@@@ 2001.03.16 by MIK
/* TAB表示文字列 */
::GetDlgItemText( hwndDlg, IDC_EDIT_TABVIEWSTRING, szTab, sizeof( szTab ) - 1 );
strcpy( m_Types.m_szTabViewString, "^ " );
for( i = 0; i < 8; i++ ){
if( (szTab[i] == '\0') || (szTab[i] < 0x20 || szTab[i] >= 0x7f) ) break;
m_Types.m_szTabViewString[i] = szTab[i];
}
//#endif
//タブ矢印表示 //@@@ 2003.03.26 MIK
m_Types.m_bTabArrow = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_TAB_ARROW );
// 2001.12.03 hor
/* スペースの挿入 */
m_Types.m_bInsSpace = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_INS_SPACE );
// From Here 2001.12.03 hor
/* アウトライン解析方法
2002.04.01 YAZAKI ルールファイル関連追加
*/
HWND hwndCombo;
int nSelPos;
// 2003.06.23 Moca ルールを使っていなくてもファイル名を保持
::GetDlgItemText( hwndDlg, IDC_EDIT_OUTLINERULEFILE, m_Types.m_szOutlineRuleFilename, sizeof( m_Types.m_szOutlineRuleFilename ));
if ( ::IsDlgButtonChecked( hwndDlg, IDC_RADIO_OUTLINERULEFILE) ){
m_Types.m_nDefaultOutline = OUTLINE_FILE;
}
else {
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES );
nSelPos = ::SendMessage( hwndCombo, CB_GETCURSEL, 0, 0 );
m_Types.m_nDefaultOutline = OlmArr[nSelPos].nMethod; /* アウトライン解析方法 */
}
/* インデント */
m_Types.m_bAutoIndent = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_INDENT );
/* 日本語空白もインデント */
m_Types.m_bAutoIndent_ZENSPACE = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_INDENT_WSPACE );
/* スマートインデント種別 */
// HWND hwndCombo;
// int nSelPos;
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_SMARTINDENT );
nSelPos = ::SendMessage( hwndCombo, CB_GETCURSEL, 0, 0 );
m_Types.m_nSmartIndent = SmartIndentArr[nSelPos].nMethod; /* スマートインデント種別 */
/* 折り返しは2行目以降を字下げ表示 */
// Oct. 1, 2002 genta コンボボックスに変更
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_INDENTLAYOUT );
nSelPos = ::SendMessage( hwndCombo, CB_GETCURSEL, 0, 0 );
m_Types.m_nIndentLayout = IndentTypeArr[nSelPos].nMethod; /* 折り返し部インデント種別 */
// From Here Nov. 20, 2000 genta IME状態
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_IMESTATE );
nSelPos = ::SendMessage( hwndCombo, CB_GETCURSEL, 0, 0 );
m_Types.m_nImeState = ImeStateArr[nSelPos].nMethod << 2; // IME入力モード
hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_IMESWITCH );
nSelPos = ::SendMessage( hwndCombo, CB_GETCURSEL, 0, 0 );
m_Types.m_nImeState |= ImeSwitchArr[nSelPos].nMethod; // IME ON/OFF
// To Here Nov. 20, 2000 genta
/* 英文ワードラップをする */
m_Types.m_bWordWrap = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_WORDWRAP );
/* 禁則処理 */
{ //@@@ 2002.04.08 MIK start
m_Types.m_bKinsokuHead = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KINSOKUHEAD ) ? TRUE : FALSE;
m_Types.m_bKinsokuTail = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KINSOKUTAIL ) ? TRUE : FALSE;
m_Types.m_bKinsokuRet = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KINSOKURET ) ? TRUE : FALSE; /* 改行文字をぶら下げる */ //@@@ 2002.04.13 MIK
m_Types.m_bKinsokuKuto = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KINSOKUKUTO ) ? TRUE : FALSE; /* 句読点をぶら下げる */ //@@@ 2002.04.17 MIK
::GetDlgItemText( hwndDlg, IDC_EDIT_KINSOKUHEAD, m_Types.m_szKinsokuHead, sizeof( m_Types.m_szKinsokuHead ) );
::GetDlgItemText( hwndDlg, IDC_EDIT_KINSOKUTAIL, m_Types.m_szKinsokuTail, sizeof( m_Types.m_szKinsokuTail ) );
} //@@@ 2002.04.08 MIK end
// Sep. 10, 2002 genta
m_Types.m_bUseDocumentIcon = ::IsDlgButtonChecked( hwndDlg, IDC_CHCEK_DOCICON ) ? TRUE : FALSE;
return TRUE;
}
// 2001/06/13 Start By asa-o: タイプ別設定の支援タブに関する処理
/* p2 メッセージ処理 */
INT_PTR CPropTypes::DispatchEvent_p2(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
WORD wNotifyCode;
WORD wID;
NMHDR* pNMHDR;
switch( uMsg ){
case WM_INITDIALOG:
/* ダイアログデータの設定 p2 */
SetData_p2( hwndDlg );
// Modified by KEITA for WIN64 2003.9.6
::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam );
/* ユーザーがエディット コントロールに入力できるテキストの長さを制限する */
/* 入力補完 単語ファイル */
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_HOKANFILE ), EM_LIMITTEXT, (WPARAM)(_MAX_PATH - 1 ), 0 );
/* キーワードヘルプ 辞書ファイル */
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_KEYWORDHELPFILE ), EM_LIMITTEXT, (WPARAM)(_MAX_PATH - 1 ), 0 );
return TRUE;
case WM_COMMAND:
wNotifyCode = HIWORD(wParam); /* 通知コード */
wID = LOWORD(wParam); /* 項目ID? コントロールID? またはアクセラレータID */
// hwndCtl = (HWND) lParam; /* コントロールのハンドル */
switch( wNotifyCode ){
/* ボタン/チェックボックスがクリックされた */
case BN_CLICKED:
/* ダイアログデータの取得 p2 */
GetData_p2( hwndDlg );
switch( wID ){
case IDC_BUTTON_HOKANFILE_REF: /* 入力補完 単語ファイルの「参照...」ボタン */
{
CDlgOpenFile cDlgOpenFile;
char szPath[_MAX_PATH + 1];
// 2003.06.23 Moca 相対パスは実行ファイルからのパスとして開く
if( _IS_REL_PATH( m_Types.m_szHokanFile ) ){
GetExecutableDir( szPath, m_Types.m_szHokanFile );
}else{
strcpy( szPath, m_Types.m_szHokanFile );
}
/* ファイルオープンダイアログの初期化 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -