void window_create (int win, widget wid, string name, bool plain) { widget pww; if (plain) pww= plain_window_widget (wid, name); else pww= popup_window_widget (wid, name); window_table (win)= pww; }
static INT_PTR CALLBACK proc_impl(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { auto obj = window_table().template get< T >( hwnd ); if( !obj ) { return FALSE; } switch( msg ) { case WM_COMMAND : obj->event().invoke( event::command(), *obj, LOWORD( wparam ), wparam, lparam ); return TRUE; case WM_DROPFILES : obj->event().invoke( event::drop_files(), *obj, reinterpret_cast< HDROP >( wparam ) ); return TRUE; case WM_NOTIFY: obj->event().invoke( event::notify(), *obj, wparam, reinterpret_cast< NMHDR const* >( lparam ) ); return TRUE; case WM_SIZING : obj->event().invoke( event::sizing(), *obj, wparam, *reinterpret_cast< RECT const* >( lparam ) ); return FALSE; case WM_CLOSE : if( obj->event().empty( event::close() ) || *( obj->event().invoke( event::close(), *obj ) ) ) { DestroyWindow( hwnd ); } return TRUE; case WM_DESTROY : obj->event().invoke( event::destroy(), *obj ); window_table().erase( hwnd ); return TRUE; } return FALSE; }
static LRESULT CALLBACK proc_impl(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, UINT_PTR, DWORD_PTR) { auto obj = window_table().template get< T >( hwnd ); if( !obj ) { return FALSE; } switch( msg ) { case WM_DROPFILES : obj->event().invoke( event::drop_files(), *obj, reinterpret_cast< HDROP >( wparam ) ); break; case WM_DESTROY: obj->event().invoke( event::destroy(), *obj ); break; } return DefSubclassProc( hwnd, msg, wparam, lparam ); }
void window_create (int win, widget wid, string name, command quit) { widget pww; pww= plain_window_widget (wid, name, quit); window_table (win)= pww; }