Procházet zdrojové kódy

subclass the builtin system message class instead

expikr před 3 měsíci
rodič
revize
f40a530fd9
1 změnil soubory, kde provedl 2 přidání a 26 odebrání
  1. 2 26
      src/tray/windows/SDL_tray.c

+ 2 - 26
src/tray/windows/SDL_tray.c

@@ -183,26 +183,6 @@ static wchar_t *convert_label(const char *in)
     return out;
 }
 
-static void register_tray_window_class(void)
-{
-    static bool init = false;
-
-    if (init) {
-        return;
-    }
-
-    HINSTANCE hInstance = GetModuleHandle(NULL);
-    WNDCLASSW wc;
-    ZeroMemory(&wc, sizeof(WNDCLASS));
-    wc.lpfnWndProc = TrayWindowProc;
-    wc.hInstance = hInstance;
-    wc.lpszClassName = L"SDLTrayRunner";
-
-    RegisterClassW(&wc);
-
-    init = true;
-}
-
 SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
 {
     SDL_Tray *tray = SDL_malloc(sizeof(SDL_Tray));
@@ -211,13 +191,9 @@ SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
         return NULL;
     }
 
-    tray->hwnd = NULL;
     tray->menu = NULL;
-
-    register_tray_window_class();
-
-    HINSTANCE hInstance = GetModuleHandle(NULL);
-    tray->hwnd = CreateWindowExW(0, L"SDLTrayRunner", NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, hInstance, NULL);
+    tray->hwnd = CreateWindowEx(0, TEXT("Message"), NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL);
+    SetWindowLongPtr(tray->hwnd, GWLP_WNDPROC, (LONG_PTR) TrayWindowProc);
 
     ZeroMemory(&tray->nid, sizeof(NOTIFYICONDATAW));
     tray->nid.cbSize = sizeof(NOTIFYICONDATAW);