[489] | 1 | #pragma once
|
---|
| 2 |
|
---|
| 3 | namespace ActiveBasic{ namespace IDE{ namespace WindowComponents{
|
---|
| 4 |
|
---|
| 5 |
|
---|
| 6 | class MdiWindow
|
---|
| 7 | : public CMDIFrameWindowImpl<MdiWindow>
|
---|
| 8 | , public CUpdateUI<MdiWindow>
|
---|
| 9 | , public CMessageFilter
|
---|
| 10 | , public CIdleHandler
|
---|
| 11 | {
|
---|
| 12 | public:
|
---|
| 13 | virtual BOOL PreTranslateMessage(MSG* pMsg){
|
---|
| 14 | if(CMDIFrameWindowImpl<MdiWindow>::PreTranslateMessage(pMsg))
|
---|
| 15 | return TRUE;
|
---|
| 16 |
|
---|
| 17 | // アクティブな子ウィンドウにメッセージフィルタの機会を与える
|
---|
| 18 | HWND hWnd = MDIGetActive();
|
---|
| 19 | if(hWnd != NULL)
|
---|
| 20 | return (BOOL)::SendMessage(hWnd, WM_FORWARDMSG, 0, (LPARAM)pMsg);
|
---|
| 21 |
|
---|
| 22 | return FALSE;
|
---|
| 23 | }
|
---|
| 24 |
|
---|
| 25 | virtual BOOL OnIdle(){
|
---|
| 26 | UIUpdateToolBar();
|
---|
| 27 | UIUpdateStatusBar();
|
---|
| 28 | return FALSE;
|
---|
| 29 | }
|
---|
| 30 |
|
---|
| 31 | BEGIN_UPDATE_UI_MAP(MdiWindow)
|
---|
| 32 | // エントリなし
|
---|
| 33 | END_UPDATE_UI_MAP()
|
---|
| 34 |
|
---|
| 35 | BEGIN_MSG_MAP_EX(MdiWindow)
|
---|
| 36 | MSG_WM_CREATE(OnCreate)
|
---|
| 37 | COMMAND_ID_HANDLER_EX(ID_APP_EXIT, OnFileExit)
|
---|
| 38 | COMMAND_ID_HANDLER_EX(ID_FILE_NEW, OnFileNew)
|
---|
| 39 | COMMAND_ID_HANDLER_EX(ID_WINDOW_CASCADE, OnWindowCascade)
|
---|
| 40 | COMMAND_ID_HANDLER_EX(ID_WINDOW_TILE_HORZ, OnWindowTile)
|
---|
| 41 | COMMAND_ID_HANDLER_EX(ID_WINDOW_ARRANGE, OnWindowArrangeIcons)
|
---|
| 42 | CHAIN_MSG_MAP(CUpdateUI<MdiWindow>)
|
---|
| 43 | CHAIN_MSG_MAP(CMDIFrameWindowImpl<MdiWindow>)
|
---|
| 44 | END_MSG_MAP()
|
---|
| 45 |
|
---|
| 46 | LRESULT OnCreate(LPCREATESTRUCT lpcs);
|
---|
| 47 |
|
---|
| 48 | void OnFileExit(UINT uNotifyCode, int nID, HWND hWndCtl){
|
---|
| 49 | PostMessage(WM_CLOSE);
|
---|
| 50 | }
|
---|
| 51 |
|
---|
| 52 | void OnFileNew(UINT uNotifyCode, int nID, HWND hWndCtl){
|
---|
| 53 | // 子ウィンドウを作成
|
---|
| 54 | MdiChild *child = new MdiChild();
|
---|
| 55 | child->CreateEx( m_hWndClient );
|
---|
| 56 | }
|
---|
| 57 |
|
---|
| 58 | void OnWindowCascade(UINT uNotifyCode, int nID, HWND hWndCtl){
|
---|
| 59 | // 子ウィンドウを重ねて表示
|
---|
| 60 | MDICascade();
|
---|
| 61 | }
|
---|
| 62 |
|
---|
| 63 | void OnWindowTile(UINT uNotifyCode, int nID, HWND hWndCtl){
|
---|
| 64 | // 子ウィンドウを上下に並べて表示
|
---|
| 65 | MDITile();
|
---|
| 66 | }
|
---|
| 67 |
|
---|
| 68 | void OnWindowArrangeIcons(UINT uNotifyCode, int nID, HWND hWndCtl){
|
---|
| 69 | // 最小化された子ウィンドウのアイコンを整列
|
---|
| 70 | MDIIconArrange();
|
---|
| 71 | }
|
---|
| 72 | };
|
---|
| 73 |
|
---|
| 74 |
|
---|
| 75 | }}}
|
---|