Verzwickter Code

Beim Überarbeiten einer Klasse, die sich um die Minimierung in den Infobereich kümmert, habe ich in folgenden Code entdeckt:

// TaskSwitchWnd erstellen
BOOL CMfxMinimizeToTray::CreateTaskSwitchWnd()
{
    // Fensterklasse registrieren, falls noch nicht geschehen
    WNDCLASSEX wcTaskSwitch; ZeroMemory(&wcTaskSwitch, sizeof(wcTaskSwitch));
    if (!GetClassInfoEx(AfxGetInstanceHandle(), TASKSWITCHWNDCLASS, &wcTaskSwitch))
    {
        // Infos setzen
        wcTaskSwitch.cbSize = sizeof(wcTaskSwitch);
        wcTaskSwitch.style = CS_DBLCLKS | CS_BYTEALIGNWINDOW;
        wcTaskSwitch.lpfnWndProc = TaskSwitchWndProc;
        wcTaskSwitch.hInstance = AfxGetInstanceHandle();
        wcTaskSwitch.hIcon = (HICON) GetClassLongPtr(AfxGetMainWnd()->GetSafeHwnd(), GCLP_HICON);
        wcTaskSwitch.hIconSm = (HICON) GetClassLongPtr(AfxGetMainWnd()->GetSafeHwnd(), GCLP_HICONSM);
        wcTaskSwitch.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
        wcTaskSwitch.lpszClassName = TASKSWITCHWNDCLASS;
        wcTaskSwitch.cbWndExtra = sizeof(DWORD);

        // Fensterklasse registrieren
        VAPI(RegisterClassEx(&wcTaskSwitch));
    }

    // Fenster erstellen
    m_hWndTaskSwitch = CreateWindow(TASKSWITCHWNDCLASS, _T(""), WS_OVERLAPPEDWINDOW, 0, 0, 0, 0, m_hWnd, NULL, AfxGetInstanceHandle(), 0);
    if (NULL == m_hWndTaskSwitch)
        return FALSE;

    // Elternfenster setzen
    SetWindowLongPtr(m_hWndTaskSwitch, 0, (LONG_PTR) m_hWnd);

    // Fenstertext vom Hauptfenster
    TCHAR szWindowText[256]; GetWindowText(m_hWnd, szWindowText, countof(szWindowText));

    // Fenstertext setzen
    CString strTaskSwitch; strTaskSwitch.FormatMessage(IDS_MFX_TASKSWITCH, szWindowText);
    SetWindowText(m_hWndTaskSwitch, strTaskSwitch);

    //
    return TRUE;
}

Was stimmt damit nicht?

6 Antworten zu “Verzwickter Code”

sizeof(LONG_PTR) != sizeof(DWORD) auf Win64 ?!

Kommentar von Marcus Humann — 31.03.2008 @ 15:45

Was kann man gewinnen? :D

Kommentar von Peter — 31.03.2008 @ 21:03

mist wollte auch wissen ob man was gewinnen kann aber ich würde mal behaupten das sich da was aufhängt und man das hauptfenster aus dem tray nicht mehr herstellen kann ^^

Kommentar von hanni — 31.03.2008 @ 21:27

Zu gewinnen gibt es die Erkenntnis, wie man es nicht machen sollte. Und die ist doch unbezahlbar, oder? ;)

Kommentar von Sven — 02.04.2008 @ 09:42

Hätte ich natürlich auch gewusst!!elf!

Nein, nicht wirklich :D

Kommentar von Firefly — 10.04.2008 @ 19:10

Aber jetzt weißt Du es. ;)

Kommentar von Sven — 11.04.2008 @ 16:15