// wxPopupWindow
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxPopupWindow : public wxPopupWindowBase
+class WXDLLIMPEXP_CORE wxPopupWindow : public wxPopupWindowBase
{
public:
wxPopupWindow() { }
wxPopupWindow(wxWindow *parent, int flags = wxBORDER_NONE)
{ (void)Create(parent, flags); }
- bool Create(wxWindow *parent, int flags = wxBORDER_NONE)
- {
- return wxPopupWindowBase::Create(parent) &&
- wxWindow::Create(parent, -1,
- wxDefaultPosition, wxDefaultSize,
- (flags & wxBORDER_MASK) | wxPOPUP_WINDOW);
- }
+ bool Create(wxWindow *parent, int flags = wxBORDER_NONE);
+
+ virtual bool Show(bool show = true);
+
+ // return the style to be used for the popup windows
+ virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const;
+
+ // get the HWND to be used as parent of this window with CreateWindow()
+ virtual WXHWND MSWGetParent() const;
protected:
- virtual void DoGetPosition(int *x, int *y) const
- {
- // the position of a "top level" window such as this should be in
- // screen coordinates, not in the client ones which MSW gives us
- // (because we are a child window)
- wxPopupWindowBase::DoGetPosition(x, y);
-
- GetParent()->DoClientToScreen(x, y);
- }
+ // popups handle the position like wxTopLevelWindow, not wxWindow
+ virtual void DoGetPosition(int *x, int *y) const;
+
+ DECLARE_DYNAMIC_CLASS_NO_COPY(wxPopupWindow)
};
#endif // _WX_MSW_POPUPWIN_H_