/////////////////////////////////////////////////////////////////////////////
-// Name: msw/textctrl.cpp
+// Name: src/msw/textctrl.cpp
// Purpose: wxTextCtrl
// Author: Julian Smart
// Modified by:
wxFLAGS_MEMBER(wxTE_CENTRE)
wxFLAGS_MEMBER(wxTE_RIGHT)
wxFLAGS_MEMBER(wxTE_DONTWRAP)
- wxFLAGS_MEMBER(wxTE_LINEWRAP)
+ wxFLAGS_MEMBER(wxTE_CHARWRAP)
wxFLAGS_MEMBER(wxTE_WORDWRAP)
wxEND_FLAGS( wxTextCtrlStyle )
EVT_SET_FOCUS(wxTextCtrl::OnSetFocus)
END_EVENT_TABLE()
+// ----------------------------------------------------------------------------
+// function prototypes
+// ----------------------------------------------------------------------------
+
+LRESULT APIENTRY _EXPORT wxTextCtrlWndProc(HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam);
+
+// ---------------------------------------------------------------------------
+// global vars
+// ---------------------------------------------------------------------------
+
+// the pointer to standard text control wnd proc
+static WNDPROC gs_wndprocEdit = (WNDPROC)NULL;
+
// ============================================================================
// implementation
// ============================================================================
+// ----------------------------------------------------------------------------
+// wnd proc for subclassed edit control
+// ----------------------------------------------------------------------------
+
+LRESULT APIENTRY _EXPORT wxTextCtrlWndProc(HWND hWnd,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ wxWindow *win = wxFindWinFromHandle((WXHWND)hWnd);
+
+ switch ( message )
+ {
+ case WM_CUT:
+ case WM_COPY:
+ case WM_PASTE:
+ if( win->HandleClipboardEvent( message ) )
+ return 0;
+ break;
+ }
+ return ::CallWindowProc(CASTWNDPROC gs_wndprocEdit, hWnd, message, wParam, lParam);
+}
+
// ----------------------------------------------------------------------------
// creation
// ----------------------------------------------------------------------------
if (!IsInkEdit())
{
if ( m_verRichEdit == 2 )
- {
+ {
if ( wxRichEditModule::Load(wxRichEditModule::Version_41) )
{
// yes, class name for version 4.1 really is 5.0
m_verRichEdit = 0;
}
}
- } // !useInkEdit
+ } // !useInkEdit
}
#endif // wxUSE_RICHEDIT
// Pass IEM_InsertText (0) as wParam, in order to have the ink always
// converted to text.
::SendMessage(GetHwnd(), EM_SETINKINSERTMODE, 0, 0);
-
+
// Make sure the mouse can be used for input
::SendMessage(GetHwnd(), EM_SETUSEMOUSEFORINPUT, 1, 0);
}
#endif
-
+
// enable the events we're interested in: we want to get EN_CHANGE as
// for the normal controls
LPARAM mask = ENM_CHANGE;
}
#endif // wxUSE_RICHEDIT
+ gs_wndprocEdit = wxSetWindowProc((HWND)GetHwnd(),
+ wxTextCtrlWndProc);
+
return true;
}
switch ( event.GetKeyCode() )
{
case WXK_RETURN:
- if ( !HasFlag(wxTE_MULTILINE) )
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
InitCommandEvent(event);
event.SetString(GetValue());
if ( GetEventHandler()->ProcessEvent(event) )
+ if ( !HasFlag(wxTE_MULTILINE) )
return;
+ //else: multiline controls need Enter for themselves
}
- //else: multiline controls need Enter for themselves
-
break;
case WXK_TAB:
static bool ms_inkEditLibLoadAttemped;
if (ms_inkEditLibLoadAttemped)
ms_inkEditLib.IsLoaded();
-
+
ms_inkEditLibLoadAttemped = true;
-
+
wxLogNull logNull;
return ms_inkEditLib.Load(wxT("inked"));
}