Komfortabler Dateimanager mit vielen Funktionen

Verzwickter Code

By Sven on 31.03.2008 - 10:00 in Entwicklung

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?

Es gibt 6 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

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

  2. Peter sagt:

    Was kann man gewinnen? 😀

  3. hanni sagt:

    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 ^^

  4. Sven sagt:

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

  5. Firefly sagt:

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

    Nein, nicht wirklich 😀

  6. Sven sagt:

    Aber jetzt weißt Du es. 😉

Top