📄 cproptypes.cpp
字号:
::LocalFree( pszMsgBuf );
}
// ::DeleteObject( m_hbmpToolButtons );
// m_hbmpToolButtons = NULL;
return nRet;
}
/* p1 メッセージ処理 */
INT_PTR CPropTypes::DispatchEvent_p1(
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;
NM_UPDOWN* pMNUD;
int idCtrl;
int nVal;
// LPDRAWITEMSTRUCT pDis;
switch( uMsg ){
case WM_INITDIALOG:
m_hwndThis = hwndDlg;
/* ダイアログデータの設定 p1 */
SetData_p1( hwndDlg );
// Modified by KEITA for WIN64 2003.9.6
::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam );
/* ユーザーがエディット コントロールに入力できるテキストの長さを制限する */
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_TYPENAME ), EM_LIMITTEXT, (WPARAM)( sizeof( m_Types.m_szTypeName ) - 1 ), 0 );
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_TYPEEXTS ), EM_LIMITTEXT, (WPARAM)( sizeof( m_Types.m_szTypeExts ) - 1 ), 0 );
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_INDENTCHARS ), EM_LIMITTEXT, (WPARAM)( sizeof( m_Types.m_szIndentChars ) - 1 ), 0 );
//#ifdef COMPILE_TAB_VIEW //@@@ 2001.03.16 by MIK
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_TABVIEWSTRING ), EM_LIMITTEXT, (WPARAM)( sizeof( m_Types.m_szTabViewString ) - 1 ), 0 );
//#endif
// Oct. 5, 2002 genta 画面上でも入力制限
::SendMessage( ::GetDlgItem( hwndDlg, IDC_EDIT_OUTLINERULEFILE ), EM_LIMITTEXT, (WPARAM)( sizeof( m_Types.m_szOutlineRuleFilename ) - 1 ), 0 );
if( 0 == m_Types.m_nIdx ){
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_TYPENAME ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_TYPEEXTS ), FALSE );
}
return TRUE;
case WM_COMMAND:
wNotifyCode = HIWORD(wParam); /* 通知コード */
wID = LOWORD(wParam); /* 項目ID? コントロールID? またはアクセラレータID */
// hwndCtl = (HWND) lParam; /* コントロールのハンドル */
switch( wNotifyCode ){
/* ボタン/チェックボックスがクリックされた */
case BN_CLICKED:
switch( wID ){
/* 2002.04.01 YAZAKI オートインデントを削除(もともと不要)
アウトライン解析にルールファイル関連を追加
*/
case IDC_RADIO_OUTLINEDEFAULT: /* アウトライン解析→標準ルール */
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_OUTLINERULEFILE ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_RULEFILE_REF ), FALSE );
::SendMessage( ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES ), CB_SETCURSEL, 0, 0 );
return TRUE;
case IDC_RADIO_OUTLINERULEFILE: /* アウトライン解析→ルールファイル */
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_COMBO_OUTLINES ), FALSE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_OUTLINERULEFILE ), TRUE );
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_RULEFILE_REF ), TRUE );
return TRUE;
case IDC_BUTTON_RULEFILE_REF: /* アウトライン解析→ルールファイルの「参照...」ボタン */
{
CDlgOpenFile cDlgOpenFile;
char szPath[_MAX_PATH + 1];
// 2003.06.23 Moca 相対パスは実行ファイルからのパスとして開く
if( _IS_REL_PATH( m_Types.m_szOutlineRuleFilename ) ){
GetExecutableDir( szPath, m_Types.m_szOutlineRuleFilename );
}else{
strcpy( szPath, m_Types.m_szOutlineRuleFilename );
}
/* ファイルオープンダイアログの初期化 */
cDlgOpenFile.Create(
m_hInstance,
hwndDlg,
"*.*",
szPath
);
if( cDlgOpenFile.DoModal_GetOpenFileName( szPath ) ){
strcpy( m_Types.m_szOutlineRuleFilename, szPath );
::SetDlgItemText( hwndDlg, IDC_EDIT_OUTLINERULEFILE, m_Types.m_szOutlineRuleFilename );
}
}
return TRUE;
// case IDC_CHECK_KINSOKUHEAD: /* 行頭禁則 */ //@@@ 2002.04.08 MIK
// if( IsDlgButtonChecked( hwndDlg, IDC_CHECK_KINSOKUHEAD ) ){
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUHEAD ), TRUE );
// }else{
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUHEAD ), FALSE );
// }
// return TRUE;
// case IDC_CHECK_KINSOKUTAIL: /* 行末禁則 */ //@@@ 2002.04.08 MIK
// if( IsDlgButtonChecked( hwndDlg, IDC_CHECK_KINSOKUTAIL ) ){
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUTAIL ), TRUE );
// }else{
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_KINSOKUTAIL ), FALSE );
// }
// return TRUE;
case IDC_CHECK_INDENT: /* オートインデント */
// MYTRACE( "IDC_CHECK_INDENT\n" );
if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_INDENT ) ){
/* 日本語空白もインデント */
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_CHECK_INDENT_WSPACE ), TRUE );
}else{
/* 日本語空白もインデント */
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_CHECK_INDENT_WSPACE ), FALSE );
}
return TRUE;
case IDC_CHECK_TAB_ARROW:
// Mar. 31, 2003 genta 矢印表示のON/OFFをTAB文字列設定に連動させる
if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_TAB_ARROW ) ){
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_TABVIEWSTRING ), FALSE );
}
else {
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_EDIT_TABVIEWSTRING ), TRUE );
}
return TRUE;
}
break; /* BN_CLICKED */
}
break; /* WM_COMMAND */
case WM_NOTIFY:
idCtrl = (int)wParam;
pNMHDR = (NMHDR*)lParam;
pMNUD = (NM_UPDOWN*)lParam;
switch( idCtrl ){
case IDC_SPIN_MAXLINELEN:
/* 折り返し文字数 */
// MYTRACE( "IDC_SPIN_MAXLINELEN\n" );
nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_MAXLINELEN, NULL, FALSE );
if( pMNUD->iDelta < 0 ){
++nVal;
}else
if( pMNUD->iDelta > 0 ){
--nVal;
}
if( nVal < 10 ){
nVal = 10;
}
if( nVal > 10240 ){
nVal = 10240;
}
::SetDlgItemInt( hwndDlg, IDC_EDIT_MAXLINELEN, nVal, FALSE );
return TRUE;
case IDC_SPIN_CHARSPACE:
/* 文字の隙間 */
// MYTRACE( "IDC_SPIN_CHARSPACE\n" );
nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_CHARSPACE, NULL, FALSE );
if( pMNUD->iDelta < 0 ){
++nVal;
}else
if( pMNUD->iDelta > 0 ){
--nVal;
}
if( nVal < 0 ){
nVal = 0;
}
if( nVal > COLUMNSPACE_MAX ){ // Feb. 18, 2003 genta 最大値の定数化
nVal = COLUMNSPACE_MAX;
}
::SetDlgItemInt( hwndDlg, IDC_EDIT_CHARSPACE, nVal, FALSE );
return TRUE;
case IDC_SPIN_LINESPACE:
/* 行の隙間 */
// MYTRACE( "IDC_SPIN_LINESPACE\n" );
nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_LINESPACE, NULL, FALSE );
if( pMNUD->iDelta < 0 ){
++nVal;
}else
if( pMNUD->iDelta > 0 ){
--nVal;
}
// From Here Oct. 8, 2000 JEPRO 行間も最小0まで設定できるように変更(昔に戻っただけ?)
// if( nVal < 1 ){
// nVal = 1;
// }
if( nVal < 0 ){
nVal = 0;
}
// To Here Oct. 8, 2000
if( nVal > LINESPACE_MAX ){ // Feb. 18, 2003 genta 最大値の定数化
nVal = LINESPACE_MAX;
}
::SetDlgItemInt( hwndDlg, IDC_EDIT_LINESPACE, nVal, FALSE );
return TRUE;
case IDC_SPIN_REPEATEDSCROLLLINENUM:
/* キーリピート時のスクロール行数 */
// MYTRACE( "IDC_SPIN_REPEATEDSCROLLLINENUM\n" );
nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_REPEATEDSCROLLLINENUM, NULL, FALSE );
if( pMNUD->iDelta < 0 ){
++nVal;
}else
if( pMNUD->iDelta > 0 ){
--nVal;
}
if( nVal < 1 ){
nVal = 1;
}
if( nVal > 10 ){
nVal = 10;
}
::SetDlgItemInt( hwndDlg, IDC_EDIT_REPEATEDSCROLLLINENUM, nVal, FALSE );
return TRUE;
case IDC_SPIN_TABSPACE:
// Sep. 22, 2002 genta
/* TAB幅 */
// MYTRACE( "IDC_SPIN_CHARSPACE\n" );
nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_TABSPACE, NULL, FALSE );
if( pMNUD->iDelta < 0 ){
++nVal;
}else
if( pMNUD->iDelta > 0 ){
--nVal;
}
if( nVal < 1 ){
nVal = 1;
}
if( nVal > 64 ){
nVal = 64;
}
::SetDlgItemInt( hwndDlg, IDC_EDIT_TABSPACE, nVal, FALSE );
return TRUE;
default:
switch( pNMHDR->code ){
case PSN_HELP:
OnHelp( hwndDlg, IDD_PROPTYPESP1 );
return TRUE;
case PSN_KILLACTIVE:
// MYTRACE( "p1 PSN_KILLACTIVE\n" );
/* ダイアログデータの取得 p1 */
GetData_p1( hwndDlg );
// if( m_nMaxLineSize_org != m_Types.m_nMaxLineSize ){
// if( IDNO == ::MessageBox( hwndDlg, "折り返し桁数を変更すると、アンドゥ?リドゥバッファがクリアされます。\nよろしいですか?", GSTR_APPNAME, MB_YESNO | MB_ICONQUESTION ) ){
// m_Types.m_nMaxLineSize = m_nMaxLineSize_org;
// SetData_p1( hwndDlg );
// }
// }
return TRUE;
//@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正
case PSN_SETACTIVE:
m_nPageNum = 0;
return TRUE;
}
break;
}
// MYTRACE( "pNMHDR->hwndFrom =%xh\n", pNMHDR->hwndFrom );
// MYTRACE( "pNMHDR->idFrom =%xh\n", pNMHDR->idFrom );
// MYTRACE( "pNMHDR->code =%xh\n", pNMHDR->code );
// MYTRACE( "pMNUD->iPos =%d\n", pMNUD->iPos );
// MYTRACE( "pMNUD->iDelta =%d\n", pMNUD->iDelta );
break;
//@@@ 2001.02.04 Start by MIK: Popup Help
case WM_HELP:
{
HELPINFO *p = (HELPINFO *)lParam;
::WinHelp( (HWND)p->hItemHandle, m_szHelpFile, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids1 );
}
return TRUE;
/*NOTREACHED*/
// break;
//@@@ 2001.02.04 End
//@@@ 2001.11.17 add start MIK
//Context Menu
case WM_CONTEXTMENU:
::WinHelp( hwndDlg, m_szHelpFile, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids1 );
return TRUE;
//@@@ 2001.11.17 add end MIK
}
return FALSE;
}
/* ダイアログデータの設定 p1 */
void CPropTypes::SetData_p1( HWND hwndDlg )
{
BOOL bRet;
static int nTabArr[] = { 2, 3, 4, 6, 8 };
static int nTabArrNum = sizeof( nTabArr ) / sizeof( nTabArr[0] );
int i;
//char szWork[32];
/* タイプ属性:名称 */
::SetDlgItemText( hwndDlg, IDC_EDIT_TYPENAME, m_Types.m_szTypeName );
/* タイプ属性:拡張子リスト */
::SetDlgItemText( hwndDlg, IDC_EDIT_TYPEEXTS, m_Types.m_szTypeExts );
/* 折り返し文字数 */
bRet = ::SetDlgItemInt( hwndDlg, IDC_EDIT_MAXLINELEN, m_Types.m_nMaxLineSize, FALSE );
/* 文字の隙間 */
bRet = ::SetDlgItemInt( hwndDlg, IDC_EDIT_CHARSPACE, m_Types.m_nColmSpace, FALSE );
/* 行の隙間 */
bRet = ::SetDlgItemInt( hwndDlg, IDC_EDIT_LINESPACE, m_Types.m_nLineSpace, FALSE );
/* TAB幅 */
// Sep. 22, 2002 genta
::SetDlgItemInt( hwndDlg, IDC_EDIT_TABSPACE, m_Types.m_nTabSpace, FALSE );
//j = 0;
//for( i = 0; i < nTabArrNum; ++i ){
// wsprintf( szWork, "%d", nTabArr[i] );
// ::SendDlgItemMessage( hwndDlg, IDC_COMBO_TABSPACE, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR)szWork );
// if( m_Types.m_nTabSpace == nTabArr[i] ){
// j = i;
// }
//}
//::SendDlgItemMessage( hwndDlg, IDC_COMBO_TABSPACE, CB_SETCURSEL, (WPARAM)j, 0 );
//#ifdef COMPILE_TAB_VIEW //@@@ 2001.03.16 by MIK
/* TAB表示文字列 */
::SetDlgItemText( hwndDlg, IDC_EDIT_TABVIEWSTRING, m_Types.m_szTabViewString );
//#endif
//タブ矢印表示 //@@@ 2003.03.26 MIK
::CheckDlgButton( hwndDlg, IDC_CHECK_TAB_ARROW, m_Types.m_bTabArrow );
// Mar. 31, 2003 genta 矢印表示のON/OFFをTAB文字列設定に連動させる
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -