Move the code dynamically loading this function to the base wxChoice class to
make it possible to use it from there in the upcoming commit.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72953
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#ifndef _WX_CHOICE_H_
#define _WX_CHOICE_H_
+struct tagCOMBOBOXINFO;
+
// ----------------------------------------------------------------------------
// Choice item
// ----------------------------------------------------------------------------
// set the height of the visible part of the control to m_heightOwn
void MSWUpdateVisibleHeight();
+ // Call GetComboBoxInfo() and return false if it's not supported by this
+ // system. Notice that the caller must initialize info.cbSize.
+ bool MSWGetComboBoxInfo(tagCOMBOBOXINFO* info) const;
+
// create and initialize the control
bool CreateAndInit(wxWindow *parent, wxWindowID id,
const wxPoint& pos,
#include "wx/settings.h"
#endif
+#include "wx/dynlib.h"
+
#include "wx/msw/private.h"
// ============================================================================
Clear();
}
+bool wxChoice::MSWGetComboBoxInfo(COMBOBOXINFO* info) const
+{
+ // TODO-Win9x: Get rid of this once we officially drop support for Win9x
+ // and just call the function directly.
+#if wxUSE_DYNLIB_CLASS
+ 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 )
+ return (*s_pfnGetComboBoxInfo)(GetHwnd(), info) != 0;
+#endif // wxUSE_DYNLIB_CLASS
+
+ return false;
+}
+
// ----------------------------------------------------------------------------
// adding/deleting items to/from the list
// ----------------------------------------------------------------------------
#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
-#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))
{