m_backgroundColour = parent->GetBackgroundColour();
m_foregroundColour = parent->GetForegroundColour();
+ long msStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD /* | WS_CLIPSIBLINGS */ ;
+
+#ifdef __WIN32__
+ if(m_windowStyle & wxBU_LEFT)
+ msStyle |= BS_LEFT;
+ if(m_windowStyle & wxBU_RIGHT)
+ msStyle |= BS_RIGHT;
+ if(m_windowStyle & wxBU_TOP)
+ msStyle |= BS_TOP;
+ if(m_windowStyle & wxBU_BOTTOM)
+ msStyle |= BS_BOTTOM;
+#endif
m_hWnd = (WXHWND)CreateWindowEx
(
MakeExtendedStyle(m_windowStyle),
wxT("BUTTON"),
label,
- WS_VISIBLE | WS_TABSTOP | WS_CHILD,
+ msStyle,
0, 0, 0, 0,
GetWinHwnd(parent),
(HMENU)m_windowId,
NULL
);
+ if (m_hWnd == 0)
+ {
+ wxString msg;
+#ifdef __WIN16__
+ msg.Printf(wxT("CreateWindowEx failed"));
+#else
+ msg.Printf(wxT("CreateWindowEx failed with error number %ld"), (long) GetLastError());
+#endif
+ wxFAIL_MSG(msg);
+ }
+
// Subclass again for purposes of dialog editing mode
SubclassWin(m_hWnd);
// event/message handlers
// ----------------------------------------------------------------------------
-bool wxButton::MSWCommand(WXUINT param, WXWORD id)
+bool wxButton::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
{
bool processed = FALSE;
switch ( param )
{
- case 1: // means that the message came from an accelerator
- case BN_CLICKED:
+ case 1: // message came from an accelerator
+ case BN_CLICKED: // normal buttons send this
+ case BN_DOUBLECLICKED: // owner-drawn ones also send this
processed = SendClickEvent();
break;
}
// let the default processign take place too
}
+ else if ( nMsg == WM_LBUTTONDBLCLK )
+ {
+ // emulate a click event to force an owner-drawn button to change its
+ // appearance - without this, it won't do it
+ (void)wxControl::MSWWindowProc(WM_LBUTTONDOWN, wParam, lParam);
+
+ // and conitnue with processing the message normally as well
+ }
// let the base class do all real processing
return wxControl::MSWWindowProc(nMsg, wParam, lParam);