Bild in Static-Feld



  • EDIT: Siehe auch Antwort Nr. 5!!!

    Hallo,
    Ich habe folgendes Problem:
    In einem Dialog habe ich ein Static-Feld, in dem ich gern ein Bitmap ausgeben möchte.
    Das Bitmap-Bild habe ich mittels LoadImage aus einer Datei geladen (funktioniert auch).
    Dann wollte ich STM_SETIMAGE an das Static-Feld senden, jedoch wird das Bild nicht gezeichnet.
    Könnte mir bitte jemand auf die Sprünge helfen, wo der Fehler steckt???

    HINSTANCE hInst = (HINSTANCE) ::GetWindowLong(hDlg, GWL_HINSTANCE);
    HBITMAP hImage = (HBITMAP) ::LoadImage(hInst, szBmpPfad, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    HWND hStatic = ::GetDlgItem(hDlg, ID_TXT_AKTION);
    ::SendMessage(hStatic, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hImage);
    //in RC-Datei
    CTEXT "In progress...", ID_TXT_AKTION, 15, 10, 275, 220, SS_CENTERIMAGE | SS_SUNKEN
    


  • so wie es aussieht hat dein Static nicht den SS_BITMAP-Style 🙄



  • //RC-Datei geändert
    CTEXT "In progress...", ID_TXT_AKTION, 15, 10, 275, 220, SS_CENTERIMAGE | SS_SUNKEN | SS_BITMAP
    

    Leider derselbe Fehler. Er lädt das Bitmap, zeigt es aber nicht an. Wenn ich jetzt dagegen Text ausgeben will mit ::SetWindowText(), so wird auch das nicht ausgeführt.



  • Versuch's mal mit CONTROL anstelle von CTEXT 🙂



  • Hat funktioniert, danke!!!



  • Ich möchte nun das Static-Feld vom Programm aus erzeugen:

    HWND hStatic = CreateWindow("static", "",
    WS_CHILD | WS_VISIBLE | SS_CENTER | SS_CENTERIMAGE | SS_SUNKEN | SS_BITMAP,
    x, y, cx, cy, hParent, NULL, hInst, NULL);
    _ASSERT(hStatic);
    //...
    HBITMAP hBmp = ::LoadBitmap(hInst, MAKEINTRESOURCE(IDB_ROT));
    _ASSERT(hBmp);
    ::SendMessage(hStatic, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmp);
    

    Leider wird wieder kein Bild angezeigt. [Auch ::ShowWindow() hilft nicht.] Muß ich anstatt von "static" wieder eine ander Fensterklasse nehmen? Wenn ja, welche?

    EDIT: Es kann auch nicht daran liegen, daß die Bitmap eventuell zu groß für das Static-Feld wäre, hBmp ist kleiner als das Static-Feld.



  • Ohne SS_CENTER geht es:

    HWND hStatic = CreateWindow("static", "", 
    WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE | SS_SUNKEN | SS_BITMAP, 
    x, y, cx, cy, hParent, NULL, hInst, NULL);
    

Anmelden zum Antworten