1 /* User-based primary surface driver
3 * Copyright 2000 TransGaming Technologies Inc.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 #include "ddraw_private.h"
29 #include "dsurface/wndproc.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(ddraw
);
35 static LRESULT WINAPI
DirectDrawSurface_WndProc(HWND hwnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
);
37 void DirectDrawSurface_RegisterClass(void)
40 memset(&wc
, 0, sizeof(wc
));
41 wc
.lpfnWndProc
= DirectDrawSurface_WndProc
;
42 wc
.cbWndExtra
= sizeof(IDirectDrawSurfaceImpl
*);
43 wc
.hCursor
= (HCURSOR
)IDC_ARROW
;
44 wc
.lpszClassName
= "WINE_DDRAW";
48 void DirectDrawSurface_UnregisterClass(void)
50 UnregisterClassA("WINE_DDRAW", 0);
53 static LRESULT WINAPI
DirectDrawSurface_WndProc(HWND hwnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
55 IDirectDrawSurfaceImpl
*This
;
58 This
= (IDirectDrawSurfaceImpl
*)GetWindowLongA(hwnd
, 0);
60 HWND window
= This
->ddraw_owner
->window
;
66 case WM_WINDOWPOSCHANGING
:
67 case WM_WINDOWPOSCHANGED
:
72 /* since we're pretending fullscreen,
73 * let's not pass these on to the app */
74 ret
= DefWindowProcA(hwnd
, msg
, wParam
, lParam
);
79 case WM_MOUSEACTIVATE
:
86 dc
= BeginPaint(hwnd
, &ps
);
87 /* call User_copy_to_screen? */
93 ret
= window
? SendMessageA(window
, msg
, wParam
, lParam
)
94 : DefWindowProcA(hwnd
, msg
, wParam
, lParam
);
97 if (msg
== WM_CREATE
) {
98 CREATESTRUCTA
*cs
= (CREATESTRUCTA
*)lParam
;
99 This
= (IDirectDrawSurfaceImpl
*)cs
->lpCreateParams
;
100 SetWindowLongA(hwnd
, 0, (LONG
)This
);
102 ret
= DefWindowProcA(hwnd
, msg
, wParam
, lParam
);