From 98164e7547f7ea21204e69885158cd0494e08c5d Mon Sep 17 00:00:00 2001 From: Ian C Date: Sat, 2 Apr 2005 01:53:30 +0000 Subject: Added simple support for dialog menus --- src/dialog.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/dialog.cpp') diff --git a/src/dialog.cpp b/src/dialog.cpp index 512dbdd..7a26a16 100644 --- a/src/dialog.cpp +++ b/src/dialog.cpp @@ -28,6 +28,7 @@ namespace W32DLib // ------------------------------------------------------------ // Dialog::Dialog() : Window() + , m_menuowner(0) { } @@ -92,6 +93,15 @@ void Dialog::AddControl(Control *control) } +// ------------------------------------------------------------ +// +void Dialog::SetMenuProc(Window *owner, W32DLibCallback callback) +{ + m_menuowner=owner; + m_menuproc=callback; +} + + // ------------------------------------------------------------ // @@ -99,6 +109,7 @@ BOOL Dialog::InstanceProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) { BOOL ret=FALSE; WORD lo=LOWORD(wp); + bool handled=false; switch(msg) { @@ -127,7 +138,7 @@ BOOL Dialog::InstanceProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) ret=Window::InstanceProc(wnd,msg,wp,lp); break; - // Messages passed onto controls + // Messages passed onto menus and controls // case WM_COMMAND: // Check for windows and resources in the wp @@ -141,9 +152,20 @@ BOOL Dialog::InstanceProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) " for resource " << (*i)->ResourceID()); ret=(*i)->ProcessMessage(msg,wp,lp); + handled=true; break; } } + + if (!handled && m_menuowner) + { + W32DEBUGOUT(MsgName(msg) << " (" << msg << + ", " << wp << ", " << lp << ")" << + " passed onto MenuProc"); + + ret=(m_menuowner->*m_menuproc)(msg,wp,lp); + } + break; default: -- cgit v1.2.3