virtual void create_painter(painter_ptr & p_out) { if (p_wnd->get_wnd()) { p_out = new painter_impl(p_wnd.get_ptr()); } }
virtual void execute() { HWND wnd = p_this->get_wnd(); uie::window_host_ptr p_host = p_this->get_host(); uie::window_ptr(p_this)->destroy_window(); p_host->relinquish_ownership(wnd); }
~painter_impl() { HWND wnd = m_wnd->get_wnd(); HDC dc = GetDC(wnd); BitBlt(dc,0,0,m_rect.right,m_rect.bottom,m_dc,0,0,SRCCOPY); SelectObject(m_dc,m_gdiobj); DeleteDC(m_dc); ReleaseDC(wnd,dc); };