comparison src/video/win32/SDL_win32window.c @ 2584:e8644f625d45 gsoc2008_force_feedback

Seems like you have to register the class and other black magic too.
author Edgar Simo <bobbens@gmail.com>
date Mon, 04 Aug 2008 15:17:52 +0000
parents 2ae5b4fc6af5
children 38f14c05a92c
comparison
equal deleted inserted replaced
2583:2ae5b4fc6af5 2584:e8644f625d45
30 #include "SDL_syswm.h" 30 #include "SDL_syswm.h"
31 31
32 32
33 /* Fake window to help with DirectInput events. */ 33 /* Fake window to help with DirectInput events. */
34 HWND SDL_HelperWindow = NULL; 34 HWND SDL_HelperWindow = NULL;
35 static ATOM SDL_HelperWindowClass = 0;
35 36
36 37
37 static int 38 static int
38 SetupWindowData(_THIS, SDL_Window * window, HWND hwnd, SDL_bool created) 39 SetupWindowData(_THIS, SDL_Window * window, HWND hwnd, SDL_bool created)
39 { 40 {
423 HINSTANCE hInstance = GetModuleHandleA(NULL); 424 HINSTANCE hInstance = GetModuleHandleA(NULL);
424 const char *class_name = "SDLHelperWindowInputCatcher"; 425 const char *class_name = "SDLHelperWindowInputCatcher";
425 const char *win_name = "SDLHelperWindowInputMsgWindow"; 426 const char *win_name = "SDLHelperWindowInputMsgWindow";
426 WNDCLASSEX wce; 427 WNDCLASSEX wce;
427 428
429 /* Create the class. */
428 ZeroMemory(&wce, sizeof (wce)); 430 ZeroMemory(&wce, sizeof (wce));
429 wce.cbSize = sizeof(WNDCLASSEX); 431 wce.cbSize = sizeof(WNDCLASSEX);
430 wce.lpfnWndProc = NULL; 432 wce.lpfnWndProc = NULL;
431 wce.lpszClassName = (LPCWSTR) class_name; 433 wce.lpszClassName = (LPCWSTR) class_name;
432 wce.hInstance = hInstance; 434 wce.hInstance = hInstance;
433 435
436 /* Register the class. */
437 SDL_HelperWindowClass = RegisterClassExA(&wce);
438 if (SDL_HelperWindowClass == 0) {
439 SDL_SetError("Unable to create Helper Window Class: error %d.", GetLastError());
440 return -1;
441 }
442
443 /* Create the window. */
434 SDL_HelperWindow = CreateWindowExA(0, class_name, win_name, WS_OVERLAPPEDWINDOW, 444 SDL_HelperWindow = CreateWindowExA(0, class_name, win_name, WS_OVERLAPPEDWINDOW,
435 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 445 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
436 CW_USEDEFAULT, HWND_MESSAGE, NULL, hInstance, NULL); 446 CW_USEDEFAULT, HWND_MESSAGE, NULL, hInstance, NULL);
437
438 if (SDL_HelperWindow == NULL) { 447 if (SDL_HelperWindow == NULL) {
439 SDL_SetError("Unable to create Helper Window: error %d.", GetLastError()); 448 SDL_SetError("Unable to create Helper Window: error %d.", GetLastError());
440 return -1; 449 return -1;
441 } 450 }
442 451
448 * Destroys the HelperWindow previously created with SDL_HelperWindowCreate. 457 * Destroys the HelperWindow previously created with SDL_HelperWindowCreate.
449 */ 458 */
450 void 459 void
451 SDL_HelperWindowDestroy(void) 460 SDL_HelperWindowDestroy(void)
452 { 461 {
462 /* Destroy the window. */
453 if (SDL_HelperWindow) { 463 if (SDL_HelperWindow) {
454 DestroyWindow(SDL_HelperWindow); 464 DestroyWindow(SDL_HelperWindow);
455 SDL_HelperWindow = NULL; 465 SDL_HelperWindow = NULL;
456 } 466 }
467
468 /* Unregister the class. */
469 if (SDL_HelperWindowClass) {
470 UnregisterClassA(SDL_HelperWindowClass, GetModuleHandleA(NULL));
471 SDL_HelperWindowClass = 0;
472 }
457 } 473 }
458 474
459 475
460 /* vi: set ts=4 sw=4 expandtab: */ 476 /* vi: set ts=4 sw=4 expandtab: */