📄 ceditapp.cpp
字号:
}
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
return;
//シングルプロセス版
// MSG msg;
// MSG msg2;
// CEditWnd* pCEditWnd;
// char szClassName[64];
// BOOL bFromEditWnd;
// while ( m_hWnd != NULL && ::GetMessage(&msg, NULL/*m_hWnd*/, 0, 0 ) ){
// bFromEditWnd = FALSE;
// if( 0 != ::GetClassName( msg.hwnd, szClassName, sizeof(szClassName) - 1 ) ){
// if( 0 == strcmp( GSTR_EDITWINDOWNAME, szClassName ) ){
// bFromEditWnd = TRUE;
// pCEditWnd = ( CEditWnd* )::GetWindowLongPtr( msg.hwnd, GWLP_USERDATA );
// }
// }
// if( bFromEditWnd ){
// if( NULL != pCEditWnd->m_hwndPrintPreviewBar && ::IsDialogMessage( pCEditWnd->m_hwndPrintPreviewBar, &msg ) ){ /* 印刷プレビュー 操作バー */
// }else{
// if( NULL != pCEditWnd->m_pShareData->m_hAccel ){
// msg2 = msg;
// if( ::TranslateAccelerator( msg.hwnd, pCEditWnd->m_pShareData->m_hAccel, &msg ) ){
// }else{
// ::TranslateMessage( &msg );
// ::DispatchMessage( &msg );
// }
// }else{
// ::TranslateMessage( &msg );
// ::DispatchMessage( &msg );
// }
// }
// }else{
// ::TranslateMessage( &msg );
// ::DispatchMessage( &msg );
// }
// }
// return;
}
/* タスクトレイのアイコンに関する処理 */
BOOL CEditApp::TrayMessage( HWND hDlg, DWORD dwMessage, UINT uID, HICON hIcon, const char* pszTip )
{
BOOL res;
NOTIFYICONDATA tnd;
tnd.cbSize = sizeof( NOTIFYICONDATA );
tnd.hWnd = hDlg;
tnd.uID = uID;
tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage = MYWM_NOTIFYICON;
tnd.hIcon = hIcon;
if( pszTip ){
lstrcpyn( tnd.szTip, pszTip, sizeof( tnd.szTip ) );
}else{
tnd.szTip[0] = '\0';
}
res = Shell_NotifyIcon( dwMessage, &tnd );
if( hIcon ){
DestroyIcon( hIcon );
}
return res;
}
/* メッセージ処理 */
LRESULT CEditApp::DispatchEvent(
HWND hwnd, // handle of window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
int nId;
// int i;
// int j;
HWND hwndWork;
//static CDlgGrep cDlgGrep; //Stonee, 2001/03/21 Grepを多重起動したときエラーになるのでGrep部分を別関数にした
LPHELPINFO lphi;
// HWND hwndExitingDlg;
// CEditWnd* pCEditWnd_Test;
// char* pszCmdLine;
int nRowNum;
EditNode* pEditNodeArr;
// HWND hwndNew;
static HWND hwndHtmlHelp;
static WORD wHotKeyMods;
static WORD wHotKeyCode;
// UINT idCtl; /* コントロールのID */
LPMEASUREITEMSTRUCT lpmis; /* 項目サイズ情報 */
LPDRAWITEMSTRUCT lpdis; /* 項目描画情報 */
int nItemWidth;
int nItemHeight;
static bool bLDClick = false; /* 左ダブルクリックをしたか 03/02/20 ai */
switch ( uMsg ){
case WM_MENUCHAR:
/* メニューアクセスキー押下時の処理(WM_MENUCHAR処理) */
return m_CMenuDrawer.OnMenuChar( hwnd, uMsg, wParam, lParam );
case WM_DRAWITEM:
// idCtl = (UINT) wParam; /* コントロールのID */
lpdis = (DRAWITEMSTRUCT*) lParam; /* 項目描画情報 */
switch( lpdis->CtlType ){
case ODT_MENU: /* オーナー描画メニュー */
/* メニューアイテム描画 */
m_CMenuDrawer.DrawItem( lpdis );
return TRUE;
}
return FALSE;
case WM_MEASUREITEM:
// idCtl = (UINT) wParam; // control identifier
lpmis = (MEASUREITEMSTRUCT*) lParam; // item-size information
switch( lpmis->CtlType ){
case ODT_MENU: /* オーナー描画メニュー */
// CMenuDrawer* pCMenuDrawer;
// pCMenuDrawer = (CMenuDrawer*)lpmis->itemData;
// MYTRACE( "WM_MEASUREITEM lpmis->itemID=%d\n", lpmis->itemID );
/* メニューアイテムの描画サイズを計算 */
nItemWidth = m_CMenuDrawer.MeasureItem( lpmis->itemID, &nItemHeight );
if( -1 == nItemWidth ){
}else{
lpmis->itemWidth = nItemWidth;
lpmis->itemHeight = nItemHeight;
}
return TRUE;
}
return FALSE;
/* タスクトレイ左クリックメニューへのショートカットキー登録 */
case WM_HOTKEY:
{
int idHotKey = (int) wParam; // identifier of hot key
UINT fuModifiers = (UINT) LOWORD(lParam); // key-modifier flags
UINT uVirtKey = (UINT) HIWORD(lParam); // virtual-key code
char szClassName[100];
char szText[256];
hwndWork = ::GetForegroundWindow();
szClassName[0] = '\0';
::GetClassName( hwndWork, szClassName, sizeof( szClassName ) - 1 );
::GetWindowText( hwndWork, szText, sizeof( szText ) - 1 );
if( 0 == strcmp( szText, "共通設定" ) ){
return -1;
}
if( ID_HOTKEY_TRAYMENU == idHotKey
&& ( wHotKeyMods ) == fuModifiers
&& wHotKeyCode == uVirtKey
){
// Jan. 1, 2003 AROKA
// タスクトレイメニューの表示タイミングをLBUTTONDOWN→LBUTTONUPに変更したことによる
::PostMessage( m_hWnd, MYWM_NOTIFYICON, 0, WM_LBUTTONUP );
}
}
return 0;
case MYWM_HTMLHELP:
{
HH_AKLINK link;
char szHtmlHelpFile[1024];
int nLen;
int nLenKey;
char* pszKey;
strcpy( szHtmlHelpFile, m_pShareData->m_szWork );
nLen = lstrlen( szHtmlHelpFile );
nLenKey = lstrlen( &m_pShareData->m_szWork[nLen + 1] );
pszKey = new char[ nLenKey + 1 ];
strcpy( pszKey, &m_pShareData->m_szWork[nLen + 1] );
// if( NULL != hwndHtmlHelp ){
// ::BringWindowToTop( hwndHtmlHelp );
// }
// Jul. 6, 2001 genta HtmlHelpの呼び出し方法変更
hwndHtmlHelp = OpenHtmlHelp(
/*hwnd*/NULL/*hwndFrame*//*m_pShareData->m_hwndTray*/,
szHtmlHelpFile,
HH_DISPLAY_TOPIC,
(DWORD_PTR)0,
true
);
link.cbStruct = sizeof(HH_AKLINK);
link.fReserved = FALSE;
link.pszKeywords = (char*)pszKey;
link.pszUrl = NULL;
link.pszMsgText = NULL;
link.pszMsgTitle = NULL;
link.pszWindow = NULL;
link.fIndexOnFail = TRUE;
// if( NULL != hwndHtmlHelp ){
// hwndHtmlHelpChild = ::FindWindow( "#32770", "Topics Found"/*NULL*/ );
// if( NULL != hwndHtmlHelpChild ){
// HWND hwndWork;
// hwndWork = ::GetParent( hwndHtmlHelpChild );
// if( hwndHtmlHelp == hwndWork ){
// hwndHtmlHelp = hwndHtmlHelpChild;
// }
// }else{
// }
// }
// if( hwndHtmlHelp != NULL ){
// DWORD dwPID;
// DWORD dwTID = ::GetWindowThreadProcessId( hwndHtmlHelp, &dwPID );
// ::AttachThreadInput( ::GetCurrentThreadId(), dwTID, TRUE );
// ::SetFocus( hwndHtmlHelp );
// ::AttachThreadInput( ::GetCurrentThreadId(), dwTID, FALSE );
// }
// Jul. 6, 2001 genta HtmlHelpの呼び出し方法変更
hwndHtmlHelp = OpenHtmlHelp(
/*hwnd*/NULL/*hwndFrame*//*m_pShareData->m_hwndTray*/,
szHtmlHelpFile,
HH_KEYWORD_LOOKUP,
(DWORD_PTR)&link,
false
);
delete [] pszKey;
}
return (LRESULT)hwndHtmlHelp;;
//シングルプロセス版
// /* 新しい編集ウィンドウの作成依頼(コマンドラインを渡す) */
// case MYWM_OPENNEWEDITOR:
// pszCmdLine = new char[lstrlen( m_pShareData->m_szWork ) + 1];
// strcpy( pszCmdLine, m_pShareData->m_szWork );
// hwndNew = OpenNewEditor3( m_hInstance, hwnd, pszCmdLine, FALSE );
// delete [] pszCmdLine;
// return (LONG)hwndNew;
// /* 編集ウィンドウオブジェクトからのアクティブ要求 */
// case MYWM_ACTIVATE_ME:
// {
// CRunningTimer cRunningTimer;
// cRunningTimer.Reset();
// while( 3000 > cRunningTimer.Read() ){
// ::BlockingHook();
// }
// /* アクティブにする */
// ActivateFrameWindow( (HWND)wParam );
// }
// return 0;
/* 編集ウィンドウオブジェクトからのオブジェクト削除要求 */
case MYWM_DELETE_ME:
//シングルプロセス版
// pCEditWnd_Test = (CEditWnd*)lParam;
// delete pCEditWnd_Test;
/* タスクトレイのアイコンを常駐しない場合 */
if( FALSE == m_pShareData->m_Common.m_bStayTaskTray /* タスクトレイのアイコンを常駐 */
|| FALSE == m_bCreatedTrayIcon /* トレイにアイコンを作っていない */
){
/* 現在開いている編集窓のリスト */
nRowNum = CShareData::getInstance()->GetOpenedWindowArr( &pEditNodeArr, TRUE );
if( 0 < nRowNum ){
delete [] pEditNodeArr;
}
/* 編集ウィンドウの数が0になったら終了 */
if( 0 == nRowNum ){
::SendMessage( hwnd, WM_CLOSE, 0, 0 );
}
}
return 0;
// case WM_RASDIALEVENT:
// {
// RASCONNSTATE rasconnstate;
// DWORD dwError;
//
// rasconnstate = (RASCONNSTATE) wParam; // connection state about to be entered
// dwError = (DWORD) lParam; // error that may have occurred
// }
// break;
case WM_CREATE:
m_hWnd = hwnd;
hwndHtmlHelp = NULL;
// Modified by KEITA for WIN64 2003.9.6
::SetWindowLongPtr( m_hWnd, GWLP_USERDATA, (LONG_PTR)this );
// for( i = 0; i < 16; ++i ){
// HWND hwndWork;
// pCEditWnd_Test = NULL;
// pCEditWnd_Test = new CEditWnd;
// if( NULL == pCEditWnd_Test ){
// MYTRACE( "オブジェクト確保失敗\n" );
// break;
// }
// hwndWork = pCEditWnd_Test->Create( m_hInstance, hwnd/*pShareData->m_hwndTray*/, NULL, 0, FALSE );
// if( NULL == hwndWork ){
// MYTRACE( "NULL == hwndWork\n" );
// break;
// }
// }
/* タスクトレイ左クリックメニューへのショートカットキー登録 */
wHotKeyMods = 0;
if( HOTKEYF_SHIFT & m_pShareData->m_Common.m_wTrayMenuHotKeyMods ){
wHotKeyMods |= MOD_SHIFT;
}
if( HOTKEYF_CONTROL & m_pShareData->m_Common.m_wTrayMenuHotKeyMods ){
wHotKeyMods |= MOD_CONTROL;
}
if( HOTKEYF_ALT & m_pShareData->m_Common.m_wTrayMenuHotKeyMods ){
wHotKeyMods |= MOD_ALT;
}
wHotKeyCode = m_pShareData->m_Common.m_wTrayMenuHotKeyCode;
::RegisterHotKey(
m_hWnd,
ID_HOTKEY_TRAYMENU,
wHotKeyMods,
wHotKeyCode
);
return 0L;
// case WM_QUERYENDSESSION:
case WM_HELP:
lphi = (LPHELPINFO) lParam;
switch( lphi->iContextType ){
case HELPINFO_MENUITEM:
CEditWnd::OnHelp_MenuItem( hwnd, lphi->iCtrlId );
break;
}
return TRUE;
case WM_COMMAND:
OnCommand( HIWORD(wParam), LOWORD(wParam), (HWND) lParam );
return 0L;
// case MYWM_SETFILEINFO:
// return 0L;
case MYWM_CHANGESETTING:
::UnregisterHotKey( m_hWnd, ID_HOTKEY_TRAYMENU );
/* タスクトレイ左クリックメニューへのショートカットキー登録 */
wHotKeyMods = 0;
if( HOTKEYF_SHIFT & m_pShareData->m_Common.m_wTrayMenuHotKeyMods ){
wHotKeyMods |= MOD_SHIFT;
}
if( HOTKEYF_CONTROL & m_pShareData->m_Common.m_wTrayMenuHotKeyMods ){
wHotKeyMods |= MOD_CONTROL;
}
if( HOTKEYF_ALT & m_pShareData->m_Common.m_wTrayMenuHotKeyMods ){
wHotKeyMods |= MOD_ALT;
}
wHotKeyCode = m_pShareData->m_Common.m_wTrayMenuHotKeyCode;
::RegisterHotKey(
m_hWnd,
ID_HOTKEY_TRAYMENU,
wHotKeyMods,
wHotKeyCode
);
//@@ /* 共有データの保存 */
//@@ m_cShareData.SaveShareData();
/* アクセラレータテーブルの再作成 */
if( m_pShareData->m_hAccel != NULL ){
::DestroyAcceleratorTable( m_pShareData->m_hAccel );
m_pShareData->m_hAccel = NULL;
}
m_pShareData->m_hAccel =
CKeyBind::CreateAccerelator(
m_pShareData->m_nKeyNameArrNum,
m_pShareData->m_pKeyNameArr
);
if( NULL == m_pShareData->m_hAccel ){
::MessageBox( NULL, "CEditApp::DispatchEvent()\nアクセラレータ テーブルが作成できません。\nシステムリソースが不足しています。", GSTR_APPNAME, MB_OK | MB_ICONSTOP );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -