#endif
#ifndef WX_PRECOMP
+#include "wx/event.h"
#include "wx/app.h"
#include "wx/dcclient.h"
#endif
+#include "wx/control.h"
+
#include "wx/msw/private.h"
-#if defined(__WIN95__) && !defined(__GNUWIN32__)
+#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__)
#include <commctrl.h>
#endif
wxWindow *parent = (wxWindow *)GetParent();
if (parent)
{
- if (parent->GetDefaultItem() == this)
+ if (parent->GetDefaultItem() == (wxButton*) this)
parent->SetDefaultItem(NULL);
}
}
wxString wxControl::GetLabel(void) const
{
- wxBuffer[0] = 0;
- if (GetHWND())
- GetWindowText((HWND)GetHWND(), wxBuffer, 1000);
+ wxBuffer[0] = 0;
+ if (GetHWND())
+ {
+ int len = GetWindowText((HWND)GetHWND(), wxBuffer, 256);
+ wxBuffer[len] = 0;
+ }
return wxString(wxBuffer);
}
}
*/
-#if 0
-// We can't rely on Windows giving us events corresponding to the wxWindows Z-ordering.
-// E.g. we can't push a wxGroupBox to the back for editing purposes.
-// Convert the item event to parent coordinates, then search for
-// an item that could receive this event.
-wxControl *wxFakeItemEvent(wxWindow *parent, wxControl *item, wxMouseEvent& event)
-{
- int x, y;
- item->GetPosition(&x, &y);
- event.m_x += x;
- event.m_y += y;
-
- wxNode *node = parent->GetChildren()->Last();
- while (node)
- {
- wxControl *newItem = (wxControl *)node->Data();
- if (newItem->IsSelected() && newItem->SelectionHandleHitTest(event.x, event.GetY()))
- {
- // This event belongs to the panel.
- parent->GetEventHandler()->OldOnMouseEvent(event);
- return NULL;
- }
- else if (newItem->HitTest(event.x, event.GetY()))
- {
- int x1, y1;
- newItem->GetPosition(&x1, &y1);
- event.x -= x1;
- event.GetY() -= y1;
- newItem->OldOnMouseEvent(event);
- return newItem;
- }
- node = node->Previous();
- }
- // No takers, so do what we would have done anyway.
- event.x -= x;
- event.y -= y;
- item->OldOnMouseEvent(event);
- return item;
-}
-#endif
-
-void wxControl::MSWOnMouseMove(const int x, const int y, const WXUINT flags)
+void wxControl::MSWOnMouseMove(int x, int y, WXUINT flags)
{
/*
// Trouble with this is that it sets the cursor for controls too :-(
m_lastEvent = wxEVT_MOTION;
m_lastXPos = event.GetX(); m_lastYPos = event.GetY();
- GetEventHandler()->OldOnMouseEvent(event);
+
+ if (!GetEventHandler()->ProcessEvent(event))
+ Default();
}
long wxControl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
}
-bool wxControl::MSWNotify(const WXWPARAM wParam, const WXLPARAM lParam)
+bool wxControl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam,
+ WXLPARAM* result)
{
#if defined(__WIN95__)
- wxCommandEvent event(0, m_windowId);
- int eventType = 0;
+ wxCommandEvent event(wxEVT_NULL, m_windowId);
+ wxEventType eventType = wxEVT_NULL;
NMHDR *hdr1 = (NMHDR*) lParam;
switch ( hdr1->code )
{
break;
}
*/
- default :
- return FALSE;
- break;
+ default:
+ return wxWindow::MSWNotify(wParam, lParam, result);
}
+
event.SetEventType(eventType);
event.SetEventObject(this);
- if ( !ProcessEvent(event) )
+ if ( !GetEventHandler()->ProcessEvent(event) )
return FALSE;
return TRUE;
-#else
- return FALSE;
+#else // !Win95
+ return FALSE;
#endif
}
::SetMapMode((HDC) event.GetDC()->GetHDC(), mode);
}
-void wxControl::SetClientSize (const int width, const int height)
+void wxControl::SetClientSize (int width, int height)
{
SetSize (-1, -1, width, height);
}
-void wxControl::Centre (const int direction)
+void wxControl::Centre (int direction)
{
int x, y, width, height, panel_width, panel_height, new_x, new_y;