static LRESULT IOCS_OnWndProc( IOCS *This, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { WNDPROC OrigWndProc = This->OrigWndProc; switch( uMsg ) { case WM_DESTROY: IOCS_Detach( This ); break; case WM_SIZE: { RECT r; r.left = r.top = 0; r.right = LOWORD( lParam ); r.bottom = HIWORD( lParam ); IOCS_OnSize( This, &r ); } break; case WM_SHOWWINDOW: IOCS_OnShow( This, (BOOL) wParam ); break; case WM_PAINT: IOCS_OnDraw( This ); break; } return CallWindowProcW( OrigWndProc, hWnd, uMsg, wParam, lParam ); }
static HRESULT IOCS_Init( IOCS *This ) { RECT rect; static const WCHAR AXWIN[] = {'A','X','W','I','N',0}; IOleObject_SetHostNames( This->control, AXWIN, AXWIN ); GetClientRect( This->hWnd, &rect ); IOCS_OnSize( This, &rect ); IOleObject_DoVerb( This->control, OLEIVERB_INPLACEACTIVATE, NULL, THIS2IOLECLIENTSITE( This ), 0, This->hWnd, &rect ); return S_OK; }