#endif
#include "wx/clipbrd.h"
-#include "wx/dynlib.h"
#include "wx/wupdlock.h"
#include "wx/msw/private.h"
WXHWND wxComboBox::GetEditHWNDIfAvailable() const
{
-#if wxUSE_DYNLIB_CLASS
+ // FIXME-VC6: Only VC6 needs this guard, see WINVER definition in
+ // include/wx/msw/wrapwin.h
#if defined(WINVER) && WINVER >= 0x0500
- typedef BOOL (WINAPI *GetComboBoxInfo_t)(HWND, COMBOBOXINFO*);
- static GetComboBoxInfo_t s_pfnGetComboBoxInfo = NULL;
- static bool s_triedToLoad = false;
- if ( !s_triedToLoad )
- {
- s_triedToLoad = true;
- wxLoadedDLL dllUser32("user32.dll");
- wxDL_INIT_FUNC(s_pfn, GetComboBoxInfo, dllUser32);
- }
-
- if ( s_pfnGetComboBoxInfo )
- {
- WinStruct<COMBOBOXINFO> info;
- (*s_pfnGetComboBoxInfo)(GetHwnd(), &info);
+ WinStruct<COMBOBOXINFO> info;
+ if ( MSWGetComboBoxInfo(&info) )
return info.hwndItem;
- }
#endif // WINVER >= 0x0500
-#endif // wxUSE_DYNLIB_CLASS
if (HasFlag(wxCB_SIMPLE))
{
wxTextEntry::Clear();
}
+bool wxComboBox::ContainsHWND(WXHWND hWnd) const
+{
+ return hWnd == GetEditHWNDIfAvailable();
+}
+
void wxComboBox::GetSelection(long *from, long *to) const
{
if ( !HasFlag(wxCB_READONLY) )
#endif // wxUSE_UXTHEME
+wxSize wxComboBox::DoGetSizeFromTextSize(int xlen, int ylen) const
+{
+ wxSize tsize( wxChoice::DoGetSizeFromTextSize(xlen, ylen) );
+
+ if ( !HasFlag(wxCB_READONLY) )
+ {
+ // Add the margins we have previously set
+ wxPoint marg( GetMargins() );
+ marg.x = wxMax(0, marg.x);
+ marg.y = wxMax(0, marg.y);
+ tsize.IncBy( marg );
+ }
+
+ return tsize;
+}
+
#endif // wxUSE_COMBOBOX