#include "wx/msw/private.h"
+#if wxUSE_UXTHEME
+ #include "wx/msw/uxtheme.h"
+#endif
+
#define GetEditHwnd() ((HWND)(GetEditHWND()))
// ----------------------------------------------------------------------------
memcpy(olestr, wcbuf, size);
- *rgelt++ = wx_static_cast(LPOLESTR, olestr);
+ *rgelt++ = static_cast<LPOLESTR>(olestr);
++(*pceltFetched);
}
const wxArrayString m_strings;
unsigned m_index;
- DECLARE_NO_COPY_CLASS(wxIEnumString)
+ wxDECLARE_NO_COPY_CLASS(wxIEnumString);
};
BEGIN_IID_TABLE(wxIEnumString)
::SendMessage(GetEditHwnd(), EM_REPLACESEL, 0, (LPARAM)text.wx_str());
}
-wxString wxTextEntry::GetValue() const
+wxString wxTextEntry::DoGetValue() const
{
return wxGetWindowText(GetEditHWND());
}
void wxTextEntry::SetInsertionPoint(long pos)
{
+ // calling DoSetSelection(-1, -1) would select everything which is not what
+ // we want here
+ if ( pos == -1 )
+ pos = GetLastPosition();
+
// be careful to call DoSetSelection() which is overridden in wxTextCtrl
// and not just SetSelection() here
DoSetSelection(pos, pos);
// auto-completion
// ----------------------------------------------------------------------------
+#if wxUSE_OLE
bool wxTextEntry::AutoCompleteFileNames()
{
#ifdef HAS_AUTOCOMPLETE
static wxDynamicLibrary s_dllShlwapi;
if ( s_pfnSHAutoComplete == (SHAutoComplete_t)-1 )
{
- wxLogNull noLog;
-
- if ( !s_dllShlwapi.Load(_T("shlwapi.dll"), wxDL_VERBATIM) )
+ if ( !s_dllShlwapi.Load(_T("shlwapi.dll"), wxDL_VERBATIM | wxDL_QUIET) )
{
s_pfnSHAutoComplete = NULL;
}
NULL,
CLSCTX_INPROC_SERVER,
IID_IAutoComplete,
- wx_reinterpret_cast(void **, &pAutoComplete)
+ reinterpret_cast<void **>(&pAutoComplete)
);
if ( FAILED(hr) )
{
hr = pAutoComplete->QueryInterface
(
IID_IAutoComplete2,
- wx_reinterpret_cast(void **, &pAutoComplete2)
+ reinterpret_cast<void **>(&pAutoComplete2)
);
if ( SUCCEEDED(hr) )
{
pAutoComplete->Release();
return true;
#else // !HAS_AUTOCOMPLETE
+ wxUnusedVar(choices);
+
return false;
#endif // HAS_AUTOCOMPLETE/!HAS_AUTOCOMPLETE
}
+#endif // wxUSE_OLE
// ----------------------------------------------------------------------------
// editable state
::SendMessage(GetEditHwnd(), EM_LIMITTEXT, len, 0);
}
+// ----------------------------------------------------------------------------
+// hints
+// ----------------------------------------------------------------------------
+
+#if wxUSE_UXTHEME
+
+#ifndef EM_SETCUEBANNER
+ #define EM_SETCUEBANNER 0x1501
+ #define EM_GETCUEBANNER 0x1502
+#endif
+
+bool wxTextEntry::SetHint(const wxString& hint)
+{
+ if ( wxUxThemeEngine::GetIfActive() )
+ {
+ // notice that this message always works with Unicode strings
+ if ( ::SendMessage(GetEditHwnd(), EM_SETCUEBANNER,
+ 0, (LPARAM)(const wchar_t *)hint.wc_str()) )
+ return true;
+ }
+
+ return wxTextEntryBase::SetHint(hint);
+}
+
+wxString wxTextEntry::GetHint() const
+{
+ if ( wxUxThemeEngine::GetIfActive() )
+ {
+ wchar_t buf[256];
+ if ( ::SendMessage(GetEditHwnd(), EM_GETCUEBANNER,
+ (WPARAM)buf, WXSIZEOF(buf)) )
+ return wxString(buf);
+ }
+
+ return wxTextEntryBase::GetHint();
+}
+
+
+#endif // wxUSE_UXTHEME
+
#endif // wxUSE_TEXTCTRL || wxUSE_COMBOBOX