source: trunk/src/DebugDialog.hpp @ 370

Revision 370, 1.7 KB checked in by Eoin, 12 years ago (diff)

Updated some (not all!) copyright dates.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#pragma once
8
9#include "stdAfx.hpp"
10
11class LogEdit : public CWindowImpl<LogEdit, CEdit>
12{
13public:
14    BEGIN_MSG_MAP_EX(CEditImpl)
15    END_MSG_MAP()
16
17        LogEdit() :
18                editLogger(hal::wlog().attach(bind(&LogEdit::log, this, _1)))
19        {}
20
21        void log(const std::wstring& text)
22        {
23                int len = ::SendMessage(m_hWnd, WM_GETTEXTLENGTH, 0, 0);
24                SetSel(len, len);
25                ReplaceSel(text.c_str(), false);
26        }
27
28private:
29        boost::signals::scoped_connection editLogger;
30};
31
32class DebugDialog :
33        public CDialogImpl<DebugDialog>,
34        public CDialogResize<DebugDialog>
35{
36private:
37        typedef DebugDialog thisClass;
38        typedef CDialogImpl<thisClass> baseClass;
39        typedef CDialogResize<thisClass> resizeClass;
40
41        LogEdit logEdit;
42
43public:
44        enum { IDD = IDD_DEBUGDIALOG };
45
46        BOOL PreTranslateMessage(MSG* pMsg)
47        {
48                return this->IsDialogMessage(pMsg);
49        }
50
51        BEGIN_MSG_MAP_EX(thisClass)
52                MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
53                MESSAGE_HANDLER(WM_CLOSE, OnClose)
54
55                if(uMsg == WM_FORWARDMSG)
56                        if(PreTranslateMessage((LPMSG)lParam)) return TRUE;
57
58                CHAIN_MSG_MAP(resizeClass)
59
60        END_MSG_MAP()
61
62        BEGIN_DLGRESIZE_MAP(thisClass)
63                DLGRESIZE_CONTROL(ED_CON, DLSZ_SIZE_X | DLSZ_SIZE_Y)
64        END_DLGRESIZE_MAP()
65
66        LRESULT OnInitDialog(UINT, WPARAM, LPARAM, BOOL&)
67        {
68                resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN);
69                logEdit.SubclassWindow(GetDlgItem(ED_CON));
70
71                return true;
72        }
73
74        LRESULT OnClose(UINT, WPARAM, LPARAM, BOOL&)
75        {
76                ShowWindow(false);
77                return true;
78        }
79};
Note: See TracBrowser for help on using the repository browser.