📄 cproptypesregex.cpp
字号:
case WM_COMMAND:
wNotifyCode = HIWORD(wParam); /* 通知コード */
wID = LOWORD(wParam); /* 項目ID? コントロールID? またはアクセラレータID */
hwndCtl = (HWND) lParam; /* コントロールのハンドル */
switch( wNotifyCode ){
/* ボタン/チェックボックスがクリックされた */
case BN_CLICKED:
switch( wID ){
case IDC_CHECK_REGEX: /* 正規表現キーワードを使う */
if( IsDlgButtonChecked( hwndDlg, IDC_CHECK_REGEX ) )
{
if( CheckRegexpVersion( NULL, 0, false ) == false )
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_YESNO | MB_ICONQUESTION | MB_TOPMOST | MB_DEFBUTTON2,
GSTR_APPNAME,
"正規表現ライブラリが見つかりません。\n\n正規表現キーワードは機能しませんが、それでも有効にしますか?",
"正規表現キーワードを使用する" );
if( nRet != IDYES )
{
CheckDlgButton( hwndDlg, IDC_CHECK_REGEX, BST_UNCHECKED );
//Disableにする。
EnableWindow( GetDlgItem( hwndDlg, IDC_CHECK_REGEX ), FALSE );
return TRUE;
}
}
}
else
{
if( CheckRegexpVersion( NULL, 0, false ) == false )
{
//Disableにする。
EnableWindow( GetDlgItem( hwndDlg, IDC_CHECK_REGEX ), FALSE );
}
}
m_Types.m_nRegexKeyMagicNumber++; //Need Compile
return TRUE;
case IDC_BUTTON_REGEX_INS: /* 挿入 */
//挿入するキー情報を取得する。
memset(szKeyWord, 0, sizeof(szKeyWord));
::GetDlgItemText( hwndDlg, IDC_EDIT_REGEX, szKeyWord, sizeof(szKeyWord) );
if( szKeyWord[0] == '\0' ) return FALSE;
//同じキーがないか調べる。
nIndex2 = ListView_GetItemCount(hwndList);
if( nIndex2 >= MAX_REGEX_KEYWORD )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "これ以上登録できません。");
return FALSE;
}
for(i = 0; i < nIndex2; i++)
{
memset(szColorIndex, 0, sizeof(szColorIndex));
ListView_GetItemText(hwndList, i, 0, szColorIndex, sizeof(szColorIndex));
if( strcmp(szKeyWord, szColorIndex) == 0 )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "同じキーワードで登録済みです。");
return FALSE;
}
}
//選択中のキーを探す。
nIndex = ListView_GetNextItem( hwndList, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex )
{
//選択中でなければ最後にする。
nIndex = nIndex2;
}
//書式をチェックする。
if( RegexKakomiCheck(szKeyWord) == FALSE ) //囲みをチェックする。
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_OK | MB_ICONSTOP | MB_TOPMOST,
GSTR_APPNAME,
"正規表現キーワードを / と /k で囲ってください。\nキーワードに / がある場合は m# と #k で囲ってください。",
"正規表現キーワード" );
return FALSE;
}
if( CheckRegexpSyntax( szKeyWord, hwndDlg, false ) == false )
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_YESNO | MB_ICONQUESTION | MB_TOPMOST | MB_DEFBUTTON2,
GSTR_APPNAME,
"書式が正しくないか、正規表現ライブラリが見つかりません。\n\n登録しますか?",
"正規表現キーワード" );
if( nRet != IDYES ) return FALSE;
}
//挿入するキー情報を取得する。
memset(szColorIndex, 0, sizeof(szColorIndex));
::GetDlgItemText( hwndDlg, IDC_COMBO_REGEX_COLOR, szColorIndex, sizeof(szColorIndex) );
if( strcmp(szColorIndex, "カーソル行アンダーライン") == 0 )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "カーソル行アンダーラインは指定できません。");
return FALSE;
}
//キー情報を挿入する。
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = szKeyWord;
lvi.iItem = nIndex;
lvi.iSubItem = 0;
lvi.lParam = 0;
ListView_InsertItem( hwndList, &lvi );
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex;
lvi.iSubItem = 1;
lvi.pszText = szColorIndex;
ListView_SetItem( hwndList, &lvi );
//挿入したキーを選択する。
ListView_SetItemState( hwndList, nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
GetData_Regex( hwndDlg );
return TRUE;
case IDC_BUTTON_REGEX_ADD: /* 追加 */
//最後のキー番号を取得する。
nIndex = ListView_GetItemCount( hwndList );
//追加するキー情報を取得する。
memset(szKeyWord, 0, sizeof(szKeyWord));
::GetDlgItemText( hwndDlg, IDC_EDIT_REGEX, szKeyWord, sizeof(szKeyWord) );
if( szKeyWord[0] == '\0' ) return FALSE;
nIndex2 = ListView_GetItemCount(hwndList);
if( nIndex2 >= MAX_REGEX_KEYWORD )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "これ以上登録できません。");
return FALSE;
}
for(i = 0; i < nIndex2; i++)
{
memset(szColorIndex, 0, sizeof(szColorIndex));
ListView_GetItemText(hwndList, i, 0, szColorIndex, sizeof(szColorIndex));
if( strcmp(szKeyWord, szColorIndex) == 0 )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "同じキーワードで登録済みです。");
return FALSE;
}
}
//書式をチェックする。
if( RegexKakomiCheck(szKeyWord) == FALSE ) //囲みをチェックする。
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_OK | MB_ICONSTOP | MB_TOPMOST,
GSTR_APPNAME,
"正規表現キーワードを / と /k で囲ってください。\nキーワードに / がある場合は m# と #k で囲ってください。",
"正規表現キーワード" );
return FALSE;
}
if( CheckRegexpSyntax( szKeyWord, hwndDlg, false ) == false )
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_YESNO | MB_ICONQUESTION | MB_TOPMOST | MB_DEFBUTTON2,
GSTR_APPNAME,
"書式が正しくないか、正規表現ライブラリが見つかりません。\n\n登録しますか?",
"正規表現キーワード" );
if( nRet != IDYES ) return FALSE;
}
//追加するキー情報を取得する。
memset(szColorIndex, 0, sizeof(szColorIndex));
::GetDlgItemText( hwndDlg, IDC_COMBO_REGEX_COLOR, szColorIndex, sizeof(szColorIndex) );
if( strcmp(szColorIndex, "カーソル行アンダーライン") == 0 )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "カーソル行アンダーラインは指定できません。");
return FALSE;
}
//キーを追加する。
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = szKeyWord;
lvi.iItem = nIndex;
lvi.iSubItem = 0;
lvi.lParam = 0;
ListView_InsertItem( hwndList, &lvi );
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex;
lvi.iSubItem = 1;
lvi.pszText = szColorIndex;
ListView_SetItem( hwndList, &lvi );
//追加したキーを選択する。
ListView_SetItemState( hwndList, nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
GetData_Regex( hwndDlg );
return TRUE;
case IDC_BUTTON_REGEX_UPD: /* 更新 */
//選択中のキーを探す。
nIndex = ListView_GetNextItem( hwndList, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "キーワードが選択されていません。");
return FALSE;
}
//更新するキー情報を取得する。
memset(szKeyWord, 0, sizeof(szKeyWord));
::GetDlgItemText( hwndDlg, IDC_EDIT_REGEX, szKeyWord, sizeof(szKeyWord) );
if( szKeyWord[0] == '\0' ) return FALSE;
nIndex2 = ListView_GetItemCount(hwndList);
for(i = 0; i < nIndex2; i++)
{
if( i != nIndex )
{
memset(szColorIndex, 0, sizeof(szColorIndex));
ListView_GetItemText(hwndList, i, 0, szColorIndex, sizeof(szColorIndex));
if( strcmp(szKeyWord, szColorIndex) == 0 )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "同じキーワードで登録済みです。");
return FALSE;
}
}
}
//書式をチェックする。
if( RegexKakomiCheck(szKeyWord) == FALSE ) //囲みをチェックする。
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_OK | MB_ICONSTOP | MB_TOPMOST | MB_DEFBUTTON2,
GSTR_APPNAME,
"正規表現キーワードを / と /k で囲ってください。\nキーワードに / がある場合は m# と #k で囲ってください。",
"正規表現キーワード" );
return FALSE;
}
if( CheckRegexpSyntax( szKeyWord, hwndDlg, false ) == false )
{
nRet = ::MYMESSAGEBOX(
hwndDlg,
MB_YESNO | MB_ICONQUESTION | MB_TOPMOST | MB_DEFBUTTON2,
GSTR_APPNAME,
"書式が正しくないか、正規表現ライブラリが見つかりません。\n\n登録しますか?",
"正規表現キーワード" );
if( nRet != IDYES ) return FALSE;
}
//追加するキー情報を取得する。
memset(szColorIndex, 0, sizeof(szColorIndex));
::GetDlgItemText( hwndDlg, IDC_COMBO_REGEX_COLOR, szColorIndex, sizeof(szColorIndex) );
if( strcmp(szColorIndex, "カーソル行アンダーライン") == 0 )
{
::MYMESSAGEBOX( hwndDlg, MB_OK | MB_ICONSTOP, GSTR_APPNAME, "カーソル行アンダーラインは指定できません。");
return FALSE;
}
//キーを更新する。
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = szKeyWord;
lvi.iItem = nIndex;
lvi.iSubItem = 0;
lvi.lParam = 0;
ListView_SetItem( hwndList, &lvi );
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex;
lvi.iSubItem = 1;
lvi.pszText = szColorIndex;
ListView_SetItem( hwndList, &lvi );
//更新したキーを選択する。
ListView_SetItemState( hwndList, nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
GetData_Regex( hwndDlg );
return TRUE;
case IDC_BUTTON_REGEX_DEL: /* 削除 */
//選択中のキー番号を探す。
nIndex = ListView_GetNextItem( hwndList, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex ) return FALSE;
//削除する。
ListView_DeleteItem( hwndList, nIndex );
//同じ位置のキーを選択状態にする。
ListView_SetItemState( hwndList, nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
GetData_Regex( hwndDlg );
return TRUE;
case IDC_BUTTON_REGEX_TOP: /* 先頭 */
//選択中のキーを探す。
nIndex = ListView_GetNextItem( hwndList, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex ) return FALSE;
if( 0 == nIndex ) return TRUE; //すでに先頭にある。
nIndex2 = 0;
ListView_GetItemText(hwndList, nIndex, 0, szKeyWord, sizeof(szKeyWord));
ListView_GetItemText(hwndList, nIndex, 1, szColorIndex, sizeof(szColorIndex));
ListView_DeleteItem(hwndList, nIndex); //古いキーを削除
//キーを追加する。
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = szKeyWord;
lvi.iItem = nIndex2;
lvi.iSubItem = 0;
lvi.lParam = 0;
ListView_InsertItem( hwndList, &lvi );
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex2;
lvi.iSubItem = 1;
lvi.pszText = szColorIndex;
ListView_SetItem( hwndList, &lvi );
//移動したキーを選択状態にする。
ListView_SetItemState( hwndList, nIndex2, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
GetData_Regex( hwndDlg );
return TRUE;
case IDC_BUTTON_REGEX_LAST: /* 最終 */
nIndex = ListView_GetNextItem( hwndList, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex ) return FALSE;
nIndex2 = ListView_GetItemCount(hwndList);
if( nIndex2 - 1 == nIndex ) return TRUE; //すでに最終にある。
ListView_GetItemText(hwndList, nIndex, 0, szKeyWord, sizeof(szKeyWord));
ListView_GetItemText(hwndList, nIndex, 1, szColorIndex, sizeof(szColorIndex));
//キーを追加する。
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = szKeyWord;
lvi.iItem = nIndex2;
lvi.iSubItem = 0;
lvi.lParam = 0;
ListView_InsertItem( hwndList, &lvi );
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex2;
lvi.iSubItem = 1;
lvi.pszText = szColorIndex;
ListView_SetItem( hwndList, &lvi );
//移動したキーを選択状態にする。
ListView_SetItemState( hwndList, nIndex2, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
ListView_DeleteItem(hwndList, nIndex); //古いキーを削除
GetData_Regex( hwndDlg );
return TRUE;
case IDC_BUTTON_REGEX_UP: /* 上へ */
nIndex = ListView_GetNextItem( hwndList, -1, LVNI_ALL | LVNI_SELECTED );
if( -1 == nIndex ) return FALSE;
if( 0 == nIndex ) return TRUE; //すでに先頭にある。
nIndex2 = ListView_GetItemCount(hwndList);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -