LoadImage auf Win monile



  • die version mit IMAGE_BITMAP als Stil hatte ich als erstes, denn so läuft das unter win xp einwandfrei. irgendjemand hat mir aber erzählt, dass unter win mobile SS_BITMAP der richtige stil sei, aber keine der beiden stil-versionen läuft unter win mobile. gibt es evt. eine fehlermeldung, die man auslesen und ggf. auswerten kann? 🙄



  • SS_BITMAP ist doch der Stil, der für das Static-Element vergeben werden muß...LoadImage kennt nur den Stil IMAGE_BITMAP. Der "Irgendjemand" soll Dir bitte mal erklären "warum" 😉 Du kannst natürlich immer GetLastError() abfragen u dann mit FormatMessage() den Klartext ausgeben lassen.



  • ok- danke. werd' nachher mal die fehlermeldung auslesen - bin gespannt...



  • die fehlermeldung lautet: "Der Parameter ist ungültig" das ist fehler 87... tja, fragt sich nur welcher parameter ungültig ist und warum... 😕



  • Wenn der Stil-Parameter noch SS_BITMAP ist, dann ist er der ungültige Parameter... 😉



  • RR schrieb:

    Wenn der Stil-Parameter noch SS_BITMAP ist, dann ist er der ungültige Parameter... 😉

    Sorry, habe das inzwischen bereits korrigiert. der Code sieht jetzt so aus:

    fp = _wfopen(cstrFile,_T("rb"));
    	if (fp != 0)
    	{
    	  fclose(fp);
    	  m_ctlBild.SetBitmap((HBITMAP) LoadImage(NULL, cstrFile, IMAGE_BITMAP, NULL, NULL, LR_LOADFROMFILE | LR_CREATEDIBSECTION ));
    
    	  // *** TEST ONLY *** -->
    	  ErrorExit(_T("SetBitmap"));
    	  // *** TEST ONLY *** <--
    
    	  UpdateData(false);
    	  UpdateWindow();
    	}
    	else
    	{
    	  cstrTmp = _T("Bitmap: ") + cstrFile + _T(" konnte nicht geöffnet werden!");
    	  AfxMessageBox(cstrTmp, MB_OK | MB_ICONSTOP);
    	}
    

    wobei das fopen dazu dient festzustellen, ob das zu ladende file überhaupt exisitiert. ErrorExit gibt den LastError aus.



  • Es wäre vielleicht auch mal hilfreich zu prüfen, ob HBITMAP != NULL ist, oder ob der Fehler beim Setzten des Bitmap im Static-Control passiert.


  • Mod

    wasp23 schrieb:

    wobei das fopen dazu dient festzustellen, ob das zu ladende file überhaupt exisitiert. ErrorExit gibt den LastError aus.

    Und warum machst Du dass, wenn LoadImage NULL zurückgibt bei Problemen? Du kannst genauso gut GetLastError dann abfragen...



  • Hallo,

    bitte genau lesen, wenn man schon für Win Mobile entwickelt. Hier:

    http://msdn.microsoft.com/en-us/library/aa920739.aspx

    steht eindeutig, dass man dort für fuLoad nicht so viele Möglichkeiten hat 😉 (gar keine!)

    MfG,

    Probe-Nutzer



  • OK - habe das ganze etwas entzerrt und folgendes versucht:

    HBITMAP	BitMap;
    	fp = _wfopen(cstrFile,_T("rb"));
    	if (fp != 0)
    	{
    	  fclose(fp);
    	  BitMap = (HBITMAP) LoadImage(NULL, cstrFile, IMAGE_BITMAP, NULL, NULL, LR_LOADFROMFILE | LR_CREATEDIBSECTION );
    	  if (BitMap != 0)
    	  {
    	    m_ctlBild.SetBitmap(BitMap);
    
    	    // *** TEST ONLY *** -->
    	    ErrorExit(_T("SetBitmap"));
    	    // *** TEST ONLY *** <--
    	  }
    	  else ErrorExit(_T("LoadImage"));
    
    	  UpdateData(false);
    	  UpdateWindow();
    	}
    	else
    	{
    	  cstrTmp = _T("Bitmap: ") + cstrFile + _T(" konnte nicht geöffnet werden!");
    	  AfxMessageBox(cstrTmp, MB_OK | MB_ICONSTOP);
    	}
    

    Das Ergebnis ist, das bereits bei LoadImage der Fehler 87 (ungültiger Parameter) auftritt.


  • Mod

    Probe-Nutzer hat Dir die Antwort schon gegeben! Lesen ⚠



  • Martin Richter schrieb:

    Probe-Nutzer hat Dir die Antwort schon gegeben! Lesen ⚠

    Habe ich nicht rechtzeitig gesehen - muss sich überschnitten haben. Habe jetzt folgendes probiert:

    HBITMAP	BitMap;
    	fp = _wfopen(cstrFile,_T("rb"));
    	if (fp != 0)
    	{
    	  fclose(fp);
    	  BitMap = (HBITMAP) LoadImage(NULL, cstrFile, IMAGE_BITMAP, NULL, NULL, NULL );
    	  if (BitMap != 0)
    	  {
    	    m_ctlBild.SetBitmap(BitMap);
    
    	    // *** TEST ONLY *** -->
    	    ErrorExit(_T("SetBitmap"));
    	    // *** TEST ONLY *** <--
    	  }
    	  else ErrorExit(_T("LoadImage"));
    
    	  UpdateData(false);
    	  UpdateWindow();
    	}
    	else
    	{
    	  cstrTmp = _T("Bitmap: ") + cstrFile + _T(" konnte nicht geöffnet werden!");
    	  AfxMessageBox(cstrTmp, MB_OK | MB_ICONSTOP);
    	}
    

    wobei LoadImage den Fehler 6 (Die Zgriffsnummer ist nicht definiert) zurückmeldet. Da ich vermute es liegt an dem ersten Parameter, habe ich mir ein hInstance-Wert geben lassen:

    HBITMAP	BitMap;
    	HINSTANCE hInstance = AfxGetInstanceHandle(); 	
    	fp = _wfopen(cstrFile,_T("rb"));
    	if (fp != 0)
    	{
    	  fclose(fp);
    	  BitMap = (HBITMAP) LoadImage(hInstance, cstrFile, IMAGE_BITMAP, NULL, NULL, NULL );
    	  if (BitMap != 0)
    	  {
    	    m_ctlBild.SetBitmap(BitMap);
    
    	    // *** TEST ONLY *** -->
    	    ErrorExit(_T("SetBitmap"));
    	    // *** TEST ONLY *** <--
    	  }
    	  else ErrorExit(_T("LoadImage"));
    
    	  UpdateData(false);
    	  UpdateWindow();
    	}
    	else
    	{
    	  cstrTmp = _T("Bitmap: ") + cstrFile + _T(" konnte nicht geöffnet werden!");
    	  AfxMessageBox(cstrTmp, MB_OK | MB_ICONSTOP);
    	}
    

    aber dann gibt LoadImage den fehler 1814 (Der angegebene Ressourcenname konnte nicht in der Imagedatei gefunden werden) zurück... 😡



  • wasp23...bei Win Mobile geht nicht LR_LOADFROMFILE. Zu lesen unter:
    [url]http://msdn.microsoft.com/en-us/library/aa920739.aspx [/url]. Du kannst kein Parameter unter fuLoad angeben. Hab ich auch nicht gewußt, aber jetzt gelernt. 🙂



  • RR schrieb:

    wasp23...bei Win Mobile geht nicht LR_LOADFROMFILE. Zu lesen unter:
    [url]http://msdn.microsoft.com/en-us/library/aa920739.aspx [/url]. Du kannst kein Parameter unter fuLoad angeben. Hab ich auch nicht gewußt, aber jetzt gelernt. 🙂

    danke für den Hinweis RR, aber die beiden letzten Parameter (NULL, NULL) kann man nicht weglassen - jedenfalls nicht, wenn es noch compilieren soll... 😕 Falls Du etwas hast, was funktioniert, wäre super, wenn Du mir ein paar exemplarische Zeilen schicken könntest - die würd' ich dann gleich mal ausprobieren.



  • habe alles genau so gemacht wie unter http://msdn.microsoft.com/en-us/library/aa920739.aspx beschrieben. Ergebnis: ERROR Nr. 6! -> "Die Zugriffsnummer ist nicht definiert"...
    Ich denke, der Befehl versucht eine Bitmap aus einem Resourcefile zu laden, anstelle direkt aus einer Bitmap (letzteres macht er aber unter Windows XP). Was nu? 😕


Anmelden zum Antworten