diff options
Diffstat (limited to 'src/control.cpp')
-rw-r--r-- | src/control.cpp | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/control.cpp b/src/control.cpp new file mode 100644 index 0000000..abcf8fb --- /dev/null +++ b/src/control.cpp @@ -0,0 +1,118 @@ +// w32dlib - Win32 Control 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/control.h" +#include "w32dlib/dialog.h" + +namespace W32DLib +{ + + +// ------------------------------------------------------------ +// +Control::Control(Dialog *parent, int resource_id) : + m_parent(parent), + m_resid(resource_id), + m_cblist() +{ +} + + +// ------------------------------------------------------------ +// +Control::~Control() +{ +} + + +// ------------------------------------------------------------ +// +int Control::ResourceID() +{ + return m_resid; +} + + +// ------------------------------------------------------------ +// +void Control::SetText(const char *text) +{ +} + + +// ------------------------------------------------------------ +// +std::string Control::GetText(int maxlen) +{ + char *buff=new char[maxlen+1]; + std::string res; + + if (GetDlgItemText(m_parent->GetHWND(),m_resid,buff,maxlen)) + { + res=buff; + } + + delete[] buff; + + return res; +} + + +// ------------------------------------------------------------ +// +BOOL Control::ProcessMessage(UINT msg, WPARAM wp, LPARAM lp) +{ + if (m_cblist.count(msg)>0) + { + W32DLibCallback cb=m_cblist[msg]; + + if (cb) + { + return cb(msg,wp,lp); + } + } + + return false; +} + + +// ------------------------------------------------------------ +// +void Control::AddCallback(UINT msg, W32DLibCallback callback) +{ + if (callback) + { + m_cblist[msg]=callback; + } + else + { + if (m_cblist.count(msg)) + { + m_cblist.remove(msg); + } + } +} + + +}; // namespace W32DLib + +// END OF FILE |