#endif
#include "wx/menuitem.h"
+#include "wx/log.h"
#include "wx/msw/private.h"
#include <string.h>
#undef GetClassInfo
#endif
+#ifdef __WXDEBUG__
+ static const char *GetMessageName(int message);
+#endif //WXDEBUG
+
#define WINDOW_MARGIN 3 // This defines sensitivity of Leave events
wxMenu *wxCurrentPopupMenu = NULL;
BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler)
EVT_CHAR(wxWindow::OnChar)
- EVT_SIZE(wxWindow::OnSize)
EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged)
EVT_INIT_DIALOG(wxWindow::OnInitDialog)
if (fontToUse && fontToUse->Ok())
{
if ((fnt=(HFONT) fontToUse->GetResourceHandle()))
- was = SelectObject(dc,fnt) ;
+ was = (HFONT) SelectObject(dc,fnt) ;
}
SIZE sizeRect;
wxWndHook = NULL;
wnd->m_hWnd = (WXHWND) hWnd;
}
-#if (DEBUG > 1)
+#if (WXDEBUG > 1)
wxDebugMsg("hWnd = %d, m_hWnd = %d, msg = %d\n", hWnd, m_hWnd, message);
#endif
// Stop right here if we don't have a valid handle
// Main Windows 3 window proc
long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
-#if 0
- switch (message)
- {
- case WM_INITDIALOG:
- case WM_ACTIVATE:
- case WM_SETFOCUS:
- case WM_KILLFOCUS:
- case WM_CREATE:
- case WM_PAINT:
- case WM_QUERYDRAGICON:
- case WM_SIZE:
- case WM_RBUTTONDOWN:
- case WM_RBUTTONUP:
- case WM_RBUTTONDBLCLK:
- case WM_MBUTTONDOWN:
- case WM_MBUTTONUP:
- case WM_MBUTTONDBLCLK:
- case WM_LBUTTONDOWN:
- case WM_LBUTTONUP:
- case WM_LBUTTONDBLCLK:
- case WM_MOUSEMOVE:
-// case WM_DESTROY:
- case WM_COMMAND:
- case WM_NOTIFY:
- case WM_MENUSELECT:
- case WM_INITMENUPOPUP:
- case WM_DRAWITEM:
- case WM_MEASUREITEM:
- case WM_KEYDOWN:
- case WM_KEYUP:
- case WM_CHAR: // Always an ASCII character
- case WM_HSCROLL:
- case WM_VSCROLL:
- case WM_CTLCOLORBTN:
- case WM_CTLCOLORDLG:
- case WM_CTLCOLORLISTBOX:
- case WM_CTLCOLORMSGBOX:
- case WM_CTLCOLORSCROLLBAR:
- case WM_CTLCOLORSTATIC:
- case WM_CTLCOLOREDIT:
- case WM_SYSCOLORCHANGE:
- case WM_ERASEBKGND:
- case WM_MDIACTIVATE:
- case WM_DROPFILES:
- case WM_QUERYENDSESSION:
-// case WM_CLOSE:
- case WM_GETMINMAXINFO:
- return MSWDefWindowProc(message, wParam, lParam );
- }
-#endif
-
+ #ifdef __WXDEBUG__
+ wxLogTrace(wxTraceMessages, "Processing %s", GetMessageName(message));
+ #endif // WXDEBUG
HWND hWnd = (HWND)m_hWnd;
return MSWDefWindowProc(message, wParam, lParam );
break;
}
- case WM_CREATE:
- {
- MSWOnCreate((WXLPCREATESTRUCT) (LPCREATESTRUCT)lParam);
- return 0;
- break;
- }
- case WM_SHOWWINDOW:
- {
- MSWOnShow((wParam != 0), (int) lParam);
- break;
- }
- case WM_PAINT:
- {
+ case WM_CREATE:
+ {
+ MSWOnCreate((WXLPCREATESTRUCT) (LPCREATESTRUCT)lParam);
+ return 0;
+ break;
+ }
+ case WM_SHOWWINDOW:
+ {
+ MSWOnShow((wParam != 0), (int) lParam);
+ break;
+ }
+ case WM_PAINT:
+ {
if (MSWOnPaint())
return 0;
else return MSWDefWindowProc(message, wParam, lParam );
break;
}
- case WM_QUERYDRAGICON:
- {
- HICON hIcon = 0;
+ case WM_QUERYDRAGICON:
+ {
+ HICON hIcon = 0;
if ((hIcon = (HICON) MSWOnQueryDragIcon()))
return (long)hIcon;
else return MSWDefWindowProc(message, wParam, lParam );
break;
}
case WM_COMMAND:
- {
+ {
#ifdef __WIN32__
WORD id = LOWORD(wParam);
HWND hwnd = (HWND)lParam;
if (!MSWOnCommand(id, cmd, (WXHWND) hwnd))
return MSWDefWindowProc(message, wParam, lParam );
break;
- }
+ }
#if defined(__WIN95__)
case WM_NOTIFY:
- {
+ {
if (!MSWOnNotify(wParam, lParam))
return MSWDefWindowProc(message, wParam, lParam );
break;
}
case WM_KEYDOWN:
- {
- if (wParam == VK_SHIFT)
- return Default();
-
- else if (wParam == VK_CONTROL)
- return Default();
-
+ // we consider these message "not interesting"
+ if ( wParam == VK_SHIFT || wParam == VK_CONTROL )
+ return Default();
+
// Avoid duplicate messages to OnChar
- else if ((wParam != VK_ESCAPE) && (wParam != VK_SPACE) && (wParam != VK_RETURN) && (wParam != VK_BACK) && (wParam != VK_TAB))
- {
+ if ( (wParam != VK_ESCAPE) && (wParam != VK_SPACE) &&
+ (wParam != VK_RETURN) && (wParam != VK_BACK) &&
+ (wParam != VK_TAB) )
+ {
MSWOnChar((WORD)wParam, lParam);
- if (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE)
- return Default();
- }
- else
- return Default();
- }
+ if ( ::GetKeyState(VK_CONTROL) & 0x100 )
+ return Default();
+ }
+ else if ( ::GetKeyState(VK_CONTROL) & 0x100 )
+ MSWOnChar((WORD)wParam, lParam);
+ else
+ return Default();
+ break;
+
case WM_KEYUP:
- {
break;
- }
- // VZ: WM_KEYUP not processed
+
case WM_CHAR: // Always an ASCII character
- {
- MSWOnChar((WORD)wParam, lParam, TRUE);
- break;
- }
+ {
+ MSWOnChar((WORD)wParam, lParam, TRUE);
+ break;
+ }
case WM_HSCROLL:
{
}
#ifdef __WIN32__
case WM_CTLCOLORBTN:
- {
+ {
int nCtlColor = CTLCOLOR_BTN;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORDLG:
- {
+ {
int nCtlColor = CTLCOLOR_DLG;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);\
break;
- }
+ }
case WM_CTLCOLORLISTBOX:
- {
+ {
int nCtlColor = CTLCOLOR_LISTBOX;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORMSGBOX:
- {
+ {
int nCtlColor = CTLCOLOR_MSGBOX;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORSCROLLBAR:
- {
+ {
int nCtlColor = CTLCOLOR_SCROLLBAR;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLORSTATIC:
- {
+ {
int nCtlColor = CTLCOLOR_STATIC;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
case WM_CTLCOLOREDIT:
- {
+ {
int nCtlColor = CTLCOLOR_EDIT;
HWND control = (HWND)lParam;
HDC pDC = (HDC)wParam;
return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor,
message, wParam, lParam);
break;
- }
+ }
#else
case WM_CTLCOLOR:
{
{
MSWOnDropFiles(wParam);
break;
- }
+ }
case WM_INITDIALOG:
{
return 0; // MSWOnInitDialog((WXHWND)(HWND)wParam);
break;
- }
+ }
case WM_QUERYENDSESSION:
{
- // Same as WM_CLOSE, but inverted results. Thx Microsoft :-)
+ // Same as WM_CLOSE, but inverted results. Thx Microsoft :-)
return MSWOnClose();
break;
}
break;
}
+ case WM_GETDLGCODE:
+ return MSWGetDlgCode();
+
/*
#if HAVE_SOCKET
case WM_TIMER:
{
#if 0
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWDestroyWindow %d\n", handle);
#endif
MSWDetachWindowMenu();
wxWndHook = NULL;
wxWinHandleList->Append((long)m_hWnd, this);
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWCreate %d\n", m_hWnd);
#endif
}
bool wxWindow::MSWOnClose(void)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnClose %d\n", handle);
#endif
return FALSE;
bool wxWindow::MSWOnDestroy(void)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnDestroy %d\n", handle);
#endif
// delete our drop target if we've got one
void wxWindow::MSWOnMenuHighlight(WXWORD WXUNUSED(item), WXWORD WXUNUSED(flags), WXHMENU WXUNUSED(sysmenu))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnMenuHighlight %d\n", handle);
#endif
}
bool wxWindow::MSWOnActivate(int state, bool WXUNUSED(minimized), WXHWND WXUNUSED(activate))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnActivate %d\n", handle);
#endif
bool wxWindow::MSWOnSetFocus(WXHWND WXUNUSED(hwnd))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnSetFocus %d\n", m_hWnd);
#endif
// Deal with caret
bool wxWindow::MSWOnKillFocus(WXHWND WXUNUSED(hwnd))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnKillFocus %d\n", m_hWnd);
#endif
// Deal with caret
void wxWindow::MSWOnDropFiles(WXWPARAM wParam)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnDropFiles %d\n", m_hWnd);
#endif
- HANDLE hFilesInfo = (HANDLE)wParam;
+ HDROP hFilesInfo = (HDROP) wParam;
POINT dropPoint;
DragQueryPoint(hFilesInfo, (LPPOINT) &dropPoint);
WXHBRUSH wxWindow::MSWOnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnCtlColour %d\n", m_hWnd);
#endif
if (nCtlColor == CTLCOLOR_DLG)
if (m_lastMsg == 0)
return 0;
+ #ifdef __WXDEBUG__
+ wxLogTrace(wxTraceMessages, "Forwarding %s to DefWindowProc.",
+ GetMessageName(m_lastMsg));
+ #endif // WXDEBUG
+
return this->MSWDefWindowProc(m_lastMsg, m_lastWParam, m_lastLParam);
}
bool wxWindow::MSWProcessMessage(WXMSG* pMsg)
{
- if (!m_hWnd)
- return FALSE;
- else
- {
- // Suggestion by Andrew Davison to allow
- // a panel to accept character input in user edit mode
-
- // OK, what we probably want to do here for wxWin 2.0
- // is have a window style to indicate whether the window
- // should process dialog-style input, since we can't
- // otherwise tell whether it's supposed to do tab traversal
- // or not.
- if (GetWindowStyleFlag() & wxTAB_TRAVERSAL)
- return (::IsDialogMessage((HWND) m_hWnd, (MSG *)pMsg) != 0);
- else
- return FALSE;
+ if ( m_hWnd != 0 && (GetWindowStyleFlag() & wxTAB_TRAVERSAL) ) {
+ // intercept dialog navigation keys
+ MSG *msg = (MSG *)pMsg;
+ bool bProcess = TRUE;
+ if ( msg->message != WM_KEYDOWN )
+ bProcess = FALSE;
+
+ if ( (HIWORD(msg->lParam) & KF_ALTDOWN) == KF_ALTDOWN )
+ bProcess = FALSE;
+
+ bool bCtrlDown = (::GetKeyState(VK_CONTROL) & 0x100) != 0;
+
+ // WM_GETDLGCODE: if the control wants it for itself, don't process it
+ // (except for Ctrl-Tab combination which is always processed)
+ LONG lDlgCode;
+ if ( bProcess && !bCtrlDown ) {
+ lDlgCode = ::SendMessage(msg->hwnd, WM_GETDLGCODE, 0, 0);
+ }
+
+ bool bForward;
+ if ( bProcess ) {
+ switch ( msg->wParam ) {
+ case VK_TAB:
+ if ( lDlgCode & DLGC_WANTTAB )
+ bProcess = FALSE;
+ else
+ bForward = !(::GetKeyState(VK_SHIFT) & 0x100);
+ break;
+
+ case VK_UP:
+ case VK_LEFT:
+ if ( lDlgCode & DLGC_WANTARROWS || bCtrlDown )
+ bProcess = FALSE;
+ else
+ bForward = FALSE;
+ break;
+
+ case VK_DOWN:
+ case VK_RIGHT:
+ if ( lDlgCode & DLGC_WANTARROWS || bCtrlDown )
+ bProcess = FALSE;
+ else
+ bForward = TRUE;
+ break;
+
+ default:
+ bProcess = FALSE;
+ }
+ }
+
+ if ( bProcess ) {
+ wxNavigationKeyEvent event;
+ event.SetDirection(bForward);
+ event.SetWindowChange(bCtrlDown);
+ event.SetEventObject(this);
+
+ if ( GetEventHandler()->ProcessEvent(event) )
+ return TRUE;
+ }
+
+ return ::IsDialogMessage((HWND)GetHWND(), msg) != 0;
}
+
+ return FALSE;
}
long wxWindow::MSWOnMDIActivate(long WXUNUSED(flag), WXHWND WXUNUSED(activate), WXHWND WXUNUSED(deactivate))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnMDIActivate %d\n", m_hWnd);
#endif
return 1;
if (m_inOnSize)
return;
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnSize %d\n", m_hWnd);
#endif
if (!m_hWnd)
// Deal with child commands from buttons etc.
bool wxWindow::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND WXUNUSED(control))
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxWindow::MSWOnCommand\n");
#endif
if (wxCurrentPopupMenu)
bool succ = popupMenu->MSWCommand(cmd, id);
return succ;
}
-#if DEBUG > 1
+#if WXDEBUG > 1
char buf[80];
sprintf(buf, "Looking for item %d...\n", id);
wxDebugMsg(buf);
if (item)
{
bool value = item->MSWCommand(cmd, id);
-#if DEBUG > 1
+#if WXDEBUG > 1
if (value)
wxDebugMsg("MSWCommand succeeded\n");
else
}
else
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("Could not find item!\n");
char buf[100];
wxDebugMsg("Item ids for this panel:\n");
if (control)
{
wxWindow *child = wxFindWinFromHandle(control);
- if ( child )
- child->MSWOnVScroll(wParam, pos, control);
+ if ( child )
+ child->MSWOnVScroll(wParam, pos, control);
return;
}
- wxScrollEvent event;
- event.SetPosition(pos);
- event.SetOrientation(wxVERTICAL);
- event.m_eventObject = this;
+ wxScrollEvent event;
+ event.SetPosition(pos);
+ event.SetOrientation(wxVERTICAL);
+ event.m_eventObject = this;
switch ( wParam )
{
if (control)
{
wxWindow *child = wxFindWinFromHandle(control);
- if ( child )
- child->MSWOnHScroll(wParam, pos, control);
+ if ( child )
+ child->MSWOnHScroll(wParam, pos, control);
return;
}
-
- wxScrollEvent event;
- event.SetPosition(pos);
- event.SetOrientation(wxHORIZONTAL);
- event.m_eventObject = this;
-
- switch ( wParam )
- {
+
+ wxScrollEvent event;
+ event.SetPosition(pos);
+ event.SetOrientation(wxHORIZONTAL);
+ event.m_eventObject = this;
+
+ switch ( wParam )
+ {
case SB_TOP:
event.m_eventType = wxEVT_SCROLL_TOP;
break;
void wxWindow::MSWOnShow(bool show, int status)
{
- wxShowEvent event(GetId(), show);
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
+ wxShowEvent event(GetId(), show);
+ event.m_eventObject = this;
+ GetEventHandler()->ProcessEvent(event);
}
bool wxWindow::MSWOnInitDialog(WXHWND WXUNUSED(hWndFocus))
{
- wxInitDialogEvent event(GetId());
- event.m_eventObject = this;
- GetEventHandler()->ProcessEvent(event);
- return TRUE;
+ wxInitDialogEvent event(GetId());
+ event.m_eventObject = this;
+ GetEventHandler()->ProcessEvent(event);
+ return TRUE;
}
void wxWindow::InitDialog(void)
{
- wxInitDialogEvent event(GetId());
- event.SetEventObject( this );
- GetEventHandler()->ProcessEvent(event);
+ wxInitDialogEvent event(GetId());
+ event.SetEventObject( this );
+ GetEventHandler()->ProcessEvent(event);
}
// Default init dialog behaviour is to transfer data to window
void wxWindow::OnInitDialog(wxInitDialogEvent& event)
{
- TransferDataToWindow();
+ TransferDataToWindow();
}
void wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font)
HFONT was = 0;
if (the_font)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxGetCharSize: Selecting HFONT %X\n", fnt);
#endif
// the_font->UseResource();
// the_font->RealizeResource();
if ((fnt=(HFONT) the_font->GetResourceHandle()))
- was = SelectObject(dc,fnt) ;
+ was = (HFONT) SelectObject(dc,fnt) ;
}
GetTextMetrics(dc, &tm);
if (the_font && fnt && was)
{
-#if DEBUG > 1
+#if WXDEBUG > 1
wxDebugMsg("wxGetCharSize: Selecting old HFONT %X\n", was);
#endif
SelectObject(dc,was) ;
::ScrollWindow((HWND) GetHWND(), dx, dy, NULL, NULL);
}
-void wxWindow::OnSize(wxSizeEvent& event)
-{
- Default();
-#if USE_CONSTRAINTS
- if (GetAutoLayout())
- Layout();
-#endif
-}
-
/*
void wxWindow::CalcScrolledPosition(int x, int y, int *xx, int *yy) const
{
void wxWindow::OnChar(wxKeyEvent& event)
{
- bool isVirtual;
- int id = wxCharCodeWXToMSW((int)event.KeyCode(), &isVirtual);
+ if ( event.KeyCode() == WXK_TAB ) {
+ // propagate the TABs to the parent - it's up to it to decide what
+ // to do with it
+ if ( GetParent() ) {
+ if ( GetParent()->ProcessEvent(event) )
+ return;
+ }
+ }
+
+ bool isVirtual;
+ int id = wxCharCodeWXToMSW((int)event.KeyCode(), &isVirtual);
- if ( id == -1 )
- id= m_lastWParam;
+ if ( id == -1 )
+ id= m_lastWParam;
if ( !event.ControlDown() )
- (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam);
+ (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam);
}
void wxWindow::OnPaint(wxPaintEvent& event)
if (vert_units)
y_pages = (int)(v_height/vert_units) - y_page;
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
int y = 0;
#else
int y = y_page-1;
::SetWindowPos((HWND) GetHWND(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}
+long wxWindow::MSWGetDlgCode()
+{
+ // default: just forward to def window proc (the msg has no parameters)
+ return MSWDefWindowProc(WM_GETDLGCODE, 0, 0);
+}
+
+bool wxWindow::AcceptsFocus() const
+{
+ return IsShown() && IsEnabled();
+}
+
+#ifdef __WXDEBUG__
+static const char *GetMessageName(int message)
+{
+ switch ( message ) {
+ case 0x0000: return "WM_NULL";
+ case 0x0001: return "WM_CREATE";
+ case 0x0002: return "WM_DESTROY";
+ case 0x0003: return "WM_MOVE";
+ case 0x0005: return "WM_SIZE";
+ case 0x0006: return "WM_ACTIVATE";
+ case 0x0007: return "WM_SETFOCUS";
+ case 0x0008: return "WM_KILLFOCUS";
+ case 0x000A: return "WM_ENABLE";
+ case 0x000B: return "WM_SETREDRAW";
+ case 0x000C: return "WM_SETTEXT";
+ case 0x000D: return "WM_GETTEXT";
+ case 0x000E: return "WM_GETTEXTLENGTH";
+ case 0x000F: return "WM_PAINT";
+ case 0x0010: return "WM_CLOSE";
+ case 0x0011: return "WM_QUERYENDSESSION";
+ case 0x0012: return "WM_QUIT";
+ case 0x0013: return "WM_QUERYOPEN";
+ case 0x0014: return "WM_ERASEBKGND";
+ case 0x0015: return "WM_SYSCOLORCHANGE";
+ case 0x0016: return "WM_ENDSESSION";
+ case 0x0017: return "WM_SYSTEMERROR";
+ case 0x0018: return "WM_SHOWWINDOW";
+ case 0x0019: return "WM_CTLCOLOR";
+ case 0x001A: return "WM_WININICHANGE";
+ case 0x001B: return "WM_DEVMODECHANGE";
+ case 0x001C: return "WM_ACTIVATEAPP";
+ case 0x001D: return "WM_FONTCHANGE";
+ case 0x001E: return "WM_TIMECHANGE";
+ case 0x001F: return "WM_CANCELMODE";
+ case 0x0020: return "WM_SETCURSOR";
+ case 0x0021: return "WM_MOUSEACTIVATE";
+ case 0x0022: return "WM_CHILDACTIVATE";
+ case 0x0023: return "WM_QUEUESYNC";
+ case 0x0024: return "WM_GETMINMAXINFO";
+ case 0x0026: return "WM_PAINTICON";
+ case 0x0027: return "WM_ICONERASEBKGND";
+ case 0x0028: return "WM_NEXTDLGCTL";
+ case 0x002A: return "WM_SPOOLERSTATUS";
+ case 0x002B: return "WM_DRAWITEM";
+ case 0x002C: return "WM_MEASUREITEM";
+ case 0x002D: return "WM_DELETEITEM";
+ case 0x002E: return "WM_VKEYTOITEM";
+ case 0x002F: return "WM_CHARTOITEM";
+ case 0x0030: return "WM_SETFONT";
+ case 0x0031: return "WM_GETFONT";
+ case 0x0037: return "WM_QUERYDRAGICON";
+ case 0x0039: return "WM_COMPAREITEM";
+ case 0x0041: return "WM_COMPACTING";
+ case 0x0044: return "WM_COMMNOTIFY";
+ case 0x0046: return "WM_WINDOWPOSCHANGING";
+ case 0x0047: return "WM_WINDOWPOSCHANGED";
+ case 0x0048: return "WM_POWER";
+ case 0x0081: return "WM_NCCREATE";
+ case 0x0082: return "WM_NCDESTROY";
+ case 0x0083: return "WM_NCCALCSIZE";
+ case 0x0084: return "WM_NCHITTEST";
+ case 0x0085: return "WM_NCPAINT";
+ case 0x0086: return "WM_NCACTIVATE";
+ case 0x0087: return "WM_GETDLGCODE";
+ case 0x00A0: return "WM_NCMOUSEMOVE";
+ case 0x00A1: return "WM_NCLBUTTONDOWN";
+ case 0x00A2: return "WM_NCLBUTTONUP";
+ case 0x00A3: return "WM_NCLBUTTONDBLCLK";
+ case 0x00A4: return "WM_NCRBUTTONDOWN";
+ case 0x00A5: return "WM_NCRBUTTONUP";
+ case 0x00A6: return "WM_NCRBUTTONDBLCLK";
+ case 0x00A7: return "WM_NCMBUTTONDOWN";
+ case 0x00A8: return "WM_NCMBUTTONUP";
+ case 0x00A9: return "WM_NCMBUTTONDBLCLK";
+ case 0x0100: return "WM_KEYDOWN";
+ case 0x0101: return "WM_KEYUP";
+ case 0x0102: return "WM_CHAR";
+ case 0x0103: return "WM_DEADCHAR";
+ case 0x0104: return "WM_SYSKEYDOWN";
+ case 0x0105: return "WM_SYSKEYUP";
+ case 0x0106: return "WM_SYSCHAR";
+ case 0x0107: return "WM_SYSDEADCHAR";
+ case 0x0108: return "WM_KEYLAST";
+ case 0x0110: return "WM_INITDIALOG";
+ case 0x0111: return "WM_COMMAND";
+ case 0x0112: return "WM_SYSCOMMAND";
+ case 0x0113: return "WM_TIMER";
+ case 0x0114: return "WM_HSCROLL";
+ case 0x0115: return "WM_VSCROLL";
+ case 0x0116: return "WM_INITMENU";
+ case 0x0117: return "WM_INITMENUPOPUP";
+ case 0x011F: return "WM_MENUSELECT";
+ case 0x0120: return "WM_MENUCHAR";
+ case 0x0121: return "WM_ENTERIDLE";
+ case 0x0200: return "WM_MOUSEMOVE";
+ case 0x0201: return "WM_LBUTTONDOWN";
+ case 0x0202: return "WM_LBUTTONUP";
+ case 0x0203: return "WM_LBUTTONDBLCLK";
+ case 0x0204: return "WM_RBUTTONDOWN";
+ case 0x0205: return "WM_RBUTTONUP";
+ case 0x0206: return "WM_RBUTTONDBLCLK";
+ case 0x0207: return "WM_MBUTTONDOWN";
+ case 0x0208: return "WM_MBUTTONUP";
+ case 0x0209: return "WM_MBUTTONDBLCLK";
+ case 0x0210: return "WM_PARENTNOTIFY";
+ case 0x0220: return "WM_MDICREATE";
+ case 0x0221: return "WM_MDIDESTROY";
+ case 0x0222: return "WM_MDIACTIVATE";
+ case 0x0223: return "WM_MDIRESTORE";
+ case 0x0224: return "WM_MDINEXT";
+ case 0x0225: return "WM_MDIMAXIMIZE";
+ case 0x0226: return "WM_MDITILE";
+ case 0x0227: return "WM_MDICASCADE";
+ case 0x0228: return "WM_MDIICONARRANGE";
+ case 0x0229: return "WM_MDIGETACTIVE";
+ case 0x0230: return "WM_MDISETMENU";
+ case 0x0233: return "WM_DROPFILES";
+ case 0x0300: return "WM_CUT";
+ case 0x0301: return "WM_COPY";
+ case 0x0302: return "WM_PASTE";
+ case 0x0303: return "WM_CLEAR";
+ case 0x0304: return "WM_UNDO";
+ case 0x0305: return "WM_RENDERFORMAT";
+ case 0x0306: return "WM_RENDERALLFORMATS";
+ case 0x0307: return "WM_DESTROYCLIPBOARD";
+ case 0x0308: return "WM_DRAWCLIPBOARD";
+ case 0x0309: return "WM_PAINTCLIPBOARD";
+ case 0x030A: return "WM_VSCROLLCLIPBOARD";
+ case 0x030B: return "WM_SIZECLIPBOARD";
+ case 0x030C: return "WM_ASKCBFORMATNAME";
+ case 0x030D: return "WM_CHANGECBCHAIN";
+ case 0x030E: return "WM_HSCROLLCLIPBOARD";
+ case 0x030F: return "WM_QUERYNEWPALETTE";
+ case 0x0310: return "WM_PALETTEISCHANGING";
+ case 0x0311: return "WM_PALETTECHANGED";
+ default:
+ static char s_szBuf[128];
+ sprintf(s_szBuf, "<unknown message = %d>", message);
+ return s_szBuf;
+ }
+}
+#endif //WXDEBUG