Nach Migration auf VS 2017: LoadToolBar(..) hat einen Haltepunkt ausgelöst



  • Ich habe nochmals nachgesehen.
    Habe auch den Grund für diesen Haltepunkt gefunden, der tatsächlich gar kein Fehler ist.

    Allerdings weiss ich nicht, wie man das lösen kann.

    Folgendes:
    Neues VS, also auch überarbeitete Systemfunktionen.
    Und über den Aufruf von LoadToolBar(..) kommt man auch bald in das MFC-Zeugs.

    In der Datei bartool.cpp gibt es die Function AfxLoadSysColorBitmap(..).
    Diese hat sich geändert!

    Alt (VS2005):

    HBITMAP AFXAPI
    AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc, BOOL bMono)
    {
    	HGLOBAL hglb;
    	if ((hglb = LoadResource(hInst, hRsrc)) == NULL)
    		return NULL;
    
    	LPBITMAPINFOHEADER lpBitmap = (LPBITMAPINFOHEADER)LockResource(hglb);
    	if (lpBitmap == NULL)
    		return NULL;
    

    Neu (VS2017)

    HBITMAP AFXAPI
    AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc, BOOL bMono)
    {
    	HGLOBAL hglb;
    	if ((hglb = LoadResource(hInst, hRsrc)) == NULL)
    	{
    		return NULL;
    	}
    
    	LPBITMAPINFOHEADER lpBitmap = (LPBITMAPINFOHEADER)LockResource(hglb);
    	if ((lpBitmap == NULL) || (lpBitmap->biBitCount > 8))
    	{
    		return NULL;    // Hier ist dann Schluss
    	}
    

    Da meine Bitmaps nun mal 24 Bit benötigen, steigt mein Programm an dieser Stelle mit der Abfrage auf 8 Bit aus!

    Wie schitzophren sind die denn bei MS?
    Nun kann man endlich die Toolbars in 24 Bit Farbtiefe bearbeiten.
    aber man darf sie nicht verwenden!
    Zumindest nicht in der CToolBar-Klasse.

    Oder hat man bei MS vielleicht durch irgend welche Aufruf Parameter doch die Möglichkeit geschaffen,
    den TrueColor Mode anzugeben? Im Create(..) vielleicht?

    Vielleicht weiss da jemand Rat?

    Grüsse
    Helmut


Anmelden zum Antworten