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 | }}}
|
---|