/** 全編集ウィンドウへメッセージを送る(Send/Post) @date 2005.01.24 genta hWndLast == NULLのとき全くメッセージが送られなかった @date 2007.06.22 ryoji nGroup引数を追加、グループ単位で順番に送る */ template BOOL CAppNodeGroupHandle::MessageToAllEditors( UINT, WPARAM, LPARAM, HWND, BOOL(WINAPI*)(HWND, UINT, WPARAM, LPARAM) ); // PostMessage版の実体化。 template BOOL CAppNodeGroupHandle::MessageToAllEditors( UINT, WPARAM, LPARAM, HWND, LRESULT(WINAPI*)(HWND, UINT, WPARAM, LPARAM) ); // SendMessage版の実体化。 template BOOL CAppNodeGroupHandle::MessageToAllEditors( UINT uMsg, /*!< メッセージ */ WPARAM wParam, /*!< 第1メッセージ パラメータ */ LPARAM lParam, /*!< 第2メッセージ パラメータ */ HWND hWndLast, /*!< 最後に送りたいウィンドウ */ T(WINAPI* MessageFunc)(HWND, UINT, WPARAM, LPARAM) /*!< SendMessage or PostMessage */ ) { EditNode *pWndArr, *p, *pLast = NULL; int n; n = CAppNodeManager::getInstance()->GetOpenedWindowArr( &pWndArr, FALSE ); if( 0 == n ){ return TRUE; } // hWndLast以外へのメッセージ。hWndLast == NULLのときにもメッセージが送られるように。 for( p = pWndArr; p != pWndArr + n ; ++p ){ if (m_nGroup == 0 || m_nGroup == p->m_nGroup) { if (IsSakuraMainWindow( p->m_hWnd )) { if (hWndLast != p->m_hWnd) { /* メッセージを送る/投げる */ MessageFunc( p->m_hWnd, uMsg, wParam, lParam ); } else { pLast = p; } } } } // hWndLastへのメッセージ if (pLast) { /* メッセージを送る/投げる */ MessageFunc( pLast->m_hWnd, uMsg, wParam, lParam ); } delete []pWndArr; return TRUE; }