diff options
author | Ian C <ianc@noddybox.co.uk> | 2005-03-22 01:43:54 +0000 |
---|---|---|
committer | Ian C <ianc@noddybox.co.uk> | 2005-03-22 01:43:54 +0000 |
commit | 0f8dbe3295b88c7f3fea8d2219a6b0fe895f2250 (patch) | |
tree | ae69ecbcfaf87f2f238142a884b5b9d574e5011f /src/dialog.cpp | |
parent | 1716bfab9f2e710dfa205e279986f9e29d85dddf (diff) |
Initial checkin
Diffstat (limited to 'src/dialog.cpp')
-rw-r--r-- | src/dialog.cpp | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/src/dialog.cpp b/src/dialog.cpp new file mode 100644 index 0000000..75b7e04 --- /dev/null +++ b/src/dialog.cpp @@ -0,0 +1,153 @@ +// w32dlib - Win32 Dialog Helpers +// +// Copyright (C) 2005 Ian Cowburn (ianc@noddybox.demon.co.uk) +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// ------------------------------------------------------------------------- +// +// $Log$ +// +#include "w32dlib/dialog.h" +#include "w32dlib/control.h" + +namespace W32DLib +{ +// ------------------------------------------------------------ +// +Dialog::ProcSet Dialog::m_procset; + + +// ------------------------------------------------------------ +// +Dialog::Dialog() +{ +} + + +// ------------------------------------------------------------ +// +Dialog::~Dialog() +{ +} + + +// ------------------------------------------------------------ +// +void Dialog::OnInit() +{ +} + + +// ------------------------------------------------------------ +// +void Dialog::OnClose() +{ +} + + +// ------------------------------------------------------------ +// +HWND Dialog::GetHWND() +{ + return m_wnd; +} + + +// ------------------------------------------------------------ +// +INT_PTR Dialog::ShowModal(HINSTANCE inst, HWND parent) +{ + return ::DialogBox(inst, + MAKEINTRESOURCE(ResourceID()), + NULL, + &this->DialogProc); +} + + +// ------------------------------------------------------------ +// +void Dialog::Close(INT_PTR result) +{ + EndDialog(m_wnd,result); +} + + +// ------------------------------------------------------------ +// +void Dialog::AddControl(Control *control) +{ + m_cset.push_back(control); +} + + +// ------------------------------------------------------------ +// + +BOOL Dialog::InstanceDialogProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) +{ + BOOL ret=FALSE; + WORD lo=LOWORD(wp); + + switch(msg) + { + case WM_INITDIALOG: + m_wnd=wnd; + m_procset[wnd]=this; + OnInit(); + break; + + case WM_CLOSE: + OnClose(); + m_procset.erase(wnd); + break; + + case WM_COMMAND: + for(ControlSet::iterator i=m_cset.begin();i!=m_cset.end();++i) + { + if (lo==(*i)->ResourceID()) + { + ret=(*i)->ProcessMessage(msg,wp,lp); + break; + } + } + break; + + default: + break; + } + + return ret; +} + +// ------------------------------------------------------------ +// + +BOOL CALLBACK Dialog::DialogProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) +{ + if (m_procset.count(wnd)) + { + return m_procset[wnd]->InstanceDialogProc(wnd,msg,wp,lp); + } + else + { + return FALSE; + } +} + + +}; // namespace w32dlib + +// END OF FILE |