Icon (Bitmap) neben Auswahlbox anzeigen.
-
Hat denn keiner eine Lösung für mein Problem?

Hier noch mal der Sourcecode des entsprechenden Buttons:
case ID_LOOK: /** if clicked, there is shown a previewof the marked item **************/ /** Get marked Item from ID_BOX**********/ hList = GetDlgItem(hwndDlg, ID_BOX); int read = SendMessage(hList, LB_GETCURSEL , 0, 0); if (read<0) return TRUE; LB_GETTEXTLEN; SendMessage(hList, LB_GETTEXT,read, (LPARAM)pfad); Sleep(100); /** if another item is marked, set pfad2 to 0 ************/ pfad2[0] = 0; /** get the path to the Bitmap ******************/ wcscat(pfad2, L"\\Storage Card\\GoPalWorld-Skin\\Designs\\Autotauscher\\"); wcscat(pfad2, pfad); wcscat(pfad2, L"\\icon.bmp\0"); /** test to copy the bitmap to the root of Storage Card ***********/ if(CopyFile(pfad2, L"\\Storage Card\\icon.bmp", FALSE) != TRUE) {MessageBox(0,L"Vorschau-Bild existiert nicht!",L"Fehler",0);} // if copying faults send Message to the user else { /** show bitmap out of marked folder in ID_BOX on hwndDlg at x = 60, y= 100 **/ if(hBitmap) DeleteObject(hBitmap); // delete "old" Bitmap hBitmap = LoadBitmap(NULL, L"\\Storage Card\\icon.bmp\0"); // Test to load bitmap from SD-card HDC hdc = GetDC(hwndDlg); HDC hdcMem = CreateCompatibleDC(hdc); HGDIOBJ hbOld = SelectObject(hdcMem,hBitmap); BitBlt(hdc, 60, 100, 50, 50, hdcMem, 0, 0, SRCCOPY); SelectObject(hdcMem,hbOld); DeleteDC(hdcMem); ReleaseDC(hwndDlg,hdc); InvalidateRect(hwndDlg,0,TRUE); // jetzt probehalber alles löschen } break;
-
Ich habe für CE nie programmiert, habe es in nächster Zeit auch nicht vor.
Aber: CopyFile kann vielleicht auf anderer Ebene arbeiten. Probier doch einfach mal, die Datei per fopen zu öffnen und dir die ersten zwei Bytes ausgeben zu lassen (die ersten beiden Bytes des BitmapFileHeaders), ist es wirklich 0x4D42?Edit
LB_GETTEXTLEN; // bringt natürlich nichts. Stattdessen if(SendMessage(hList,LB_GETTEXTLEN,read,0)>=/*Puffergröße*/) return 0;
-
Hallo zusammen,
erst einmal vielen Dank für Eure Hilfe.

Ich bin jetzt mal einen anderen Weg gegangen zum testen...
Ich habe jetzt folgendes festgestellt:
wenn ich mit
hbit = LoadBitmap(NULL, MAKEINTRESOURCE(IDR_BITMAP)); HWND imgCtrl = CreateWindow( _T("STATIC"), NULL, SS_LEFT | SS_BITMAP | WS_CHILD | WS_VISIBLE, 40, 120 , 50, 50, hwndDlg, NULL, NULL, NULL); SendMessage(imgCtrl,STM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)hbit);ein Bitmap mit in die Exe packe (Pelles C) dann wird das Bitmap an der Stelle angezeigt wenn ich den Button klicke.
Gehe ich hin und ändere:
hbit = LoadBitmap(NULL, MAKEINTRESOURCE(IDR_BITMAP));auf einen Dateipfad, z.B:
hbit = LoadBitmap(NULL, L"\\Storage Card\\test.bmp\0");dann geht da nix...

Selbstverständlich funktioniert dann
hbit = LoadBitmap(NULL, pfad2);auch nicht...

-
Nur zur Komplettierung...
Ich habs geschafft. Ich erstelle ein neues Fenster und kriege das Bitmap damit sichtbar:
hbit = SHLoadDIBitmap(pfad2); HWND imgCtrl = CreateWindow( _T("STATIC"), L"Auto", SS_LEFT | SS_BITMAP | WS_VISIBLE, 40, 120 , 50, 50, hwnd1, NULL, NULL, NULL); SendMessage(imgCtrl,STM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)hbit);Leider funktioniert das nicht, wenn ich das WS_CHILD setzen will. Aber damit kann ich ganz gut leben.
Vielen Dank noch mal für Eure Hilfe!
