Reine resource dll



  • Sach mal, so wie ich deinen Code gerade sehr lädst und schließt du ständig diese eine arme DLL. Warum denn nicht nur einmal laden?

    HINSTANCE Klasse::getDll() {
      static HINSTANCE DLL;
      if(!DLL) 
       DLL = LoadLibrary(T_("testDLL.dll"));
      return DLL;
    }
    Klasse::~Klasse() {
      HINSTANCE DLL = getDll();
      if(DLL)
        FreeLibrary(DLL);
    }
    


  • Ja, hast schon recht. Aber in dieser Klasse lade ich nur ein Bitmap aus der DLL und öffne Sie also nur einmal. Später wenn ich in einer Klasse mehr Bitmaps aus der DLL benötige, mach ich das anders. Nur wie wandel ich jetzt das HBITMAP in ein UINT um? Denn ein UNIT wird von der Funktion SetBitmap erwartet. Hier ist der Code der Funktion SetBitmap für meinen MDI Client Bereich

    //MdiClient.h
    BOOL SetBitmap(UINT nID);
    
    //MdiClient.cpp
    BOOL CMdiClient::SetBitmap(UINT nID)
    {
    	BOOL bResult = true;
    
    	LockWindowUpdate();
    
    	if (m_pBmp)
    	{
    		m_pBmp->DeleteObject();
    		delete m_pBmp;
    		m_pBmp = NULL;
    	}
    
    	m_pBmp = new CBitmap();
    	bResult = m_pBmp->LoadBitmap(nID);
    
    	UnlockWindowUpdate();
    
    	return bResult;
    }
    

    Ich weis das ich es ändern muss, das kein UNIT erwartet wird. Aber wie mach ich das? oder kann man auch vorher ein HBITMAP in ein UNIT umwandeln??

    asmodia



  • Wenn ich jetzt das BMP aus der DLL beim Start der Anwendung Temporär auslagern würde, und es dann m_wndMdiClient.SetBitmap(">>hier<<"); wieder laden würde, müsst das doch funktionieren?!?! aber das wäre nicht soo schön, oder??

    asmodia



  • vielleicht geht es auch, wenn ich eine Kopie des BMP aus der DLL erstelle, und in die Resourcen der Anwendung einfüge. Hat jemand dafür vielleicht eine Idee??

    asmodia


Anmelden zum Antworten