git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29102
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
virtual bool UnregisterHotKey(int hotkeyId);
#endif // wxUSE_HOTKEY
virtual bool UnregisterHotKey(int hotkeyId);
#endif // wxUSE_HOTKEY
- // implementation from now on
- // --------------------------
-
- // simple accessors
- // ----------------
+ // window handle stuff
+ // -------------------
WXHWND GetHWND() const { return m_hWnd; }
void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
virtual WXWidget GetHandle() const { return GetHWND(); }
WXHWND GetHWND() const { return m_hWnd; }
void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
virtual WXWidget GetHandle() const { return GetHWND(); }
+ void AssociateHandle(WXWidget handle);
+ void DissociateHandle();
+
+
+ // implementation from now on
+ // ==========================
+
// event handlers
// --------------
// event handlers
// --------------
// is only used for wxWin itself or for user code which wants to call
// platform-specific APIs
virtual WXWidget GetHandle() const = 0;
// is only used for wxWin itself or for user code which wants to call
// platform-specific APIs
virtual WXWidget GetHandle() const = 0;
+ // associate the window with a new native handle
+ virtual void AssociateHandle(WXWidget WXUNUSED(handle)) { }
+ // dissociate the current native handle from the window
+ virtual void DissociateHandle() { }
#if wxUSE_PALETTE
// Store the palette used by DCs in wxWindow so that the dcs can share
#if wxUSE_PALETTE
// Store the palette used by DCs in wxWindow so that the dcs can share
HWND hwnd = GetHwnd();
if ( hwnd )
{
HWND hwnd = GetHwnd();
if ( hwnd )
{
wxCHECK_RET( ::IsWindow(hwnd), wxT("invalid HWND in UnsubclassWin") );
wxCHECK_RET( ::IsWindow(hwnd), wxT("invalid HWND in UnsubclassWin") );
+void wxWindowMSW::AssociateHandle(WXWidget handle)
+{
+ if ( m_hWnd )
+ {
+ if ( !::DestroyWindow(GetHwnd()) )
+ wxLogLastError(wxT("DestroyWindow"));
+ }
+
+ WXHWND wxhwnd = (WXHWND)handle;
+
+ SetHWND(wxhwnd);
+ SubclassWin(wxhwnd);
+}
+
+void wxWindowMSW::DissociateHandle()
+{
+ // this also calls SetHWND(0) for us
+ UnsubclassWin();
+}
+
+
bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc)
{
// Unicows note: the code below works, but only because WNDCLASS contains
bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc)
{
// Unicows note: the code below works, but only because WNDCLASS contains