Zugriff auf .res Datei



  • lippoliv schrieb:

    Ihr seid die besten"! 🙂

    Danke für das Kompliment, ist aber etwas übertrieben... 👍



  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
    {
    	//ShowWindow( GetConsoleWindow(), SW_HIDE ); //Konsole verstecken
    	STDHANDLESTRUCT		myWnd	= { 0 };
    	MSG					myWndMsg;
    	HRSRC				myRes = NULL;
    	HGLOBAL				mySource = NULL;
    
    	if(  NULL != (myRes = FindResource( GetModuleHandle(NULL), TEXT("BITMAP_0"), RT_BITMAP )) &&
    		 NULL != (logo = LoadBitmap( GetModuleHandle(NULL), TEXT("BITMAP_0") )))//HBITMAP logo
    		//bitmap wurde geladen{
    		aktInst = hInstance;
    
    		wsprintf( appTitle, "%s - Write your own Bass Tabs | Version: %s", appName, VERSION );
    
    		myWnd.programIcon			= NULL;
    		if(  NULL != ( myRes = FindResource( GetModuleHandle(NULL), TEXT("ICON_0"), RT_ICON ) ) &&
    			 NULL != ( myIcon = LoadIcon( GetModuleHandle(NULL), TEXT("ICON_0") ) ) )
    			myWnd.programIcon = &myIcon;
    		else
    			printf( "icon not loaded %d\n", GetLastError() );
    
    		//aussehen des Forms
    		myWnd.hInst 				= hInstance;
    		myWnd.name 					= appName;
    		myWnd.procedure				= (WNDPROC)WndProc;
    		myWnd.color					= (HBRUSH)GetStockObject(WHITE_BRUSH);
    
    		if( regStandardWnd( myWnd )&&	//registrieren der Fensterklasse
    			createMainWindow( hInstance ) )	//erstellen + anzeigen des Fensters
    		{
    			while( GetMessage( &myWndMsg, NULL, 0, 0 ) )		//Auf Nachricht warten(muss in jedes Windows-Programm)
    			{
    				TranslateMessage( &myWndMsg );	//Übersetzt von "Virtual Key" zu "Character" message
    				DispatchMessage( &myWndMsg );	//Bearbeitet die Message(std oder nach WndProc())
    			}
    		}
    	}
    	else
    		printf( "!FindResource %d\n", GetLastError() );
    	return 0;
    }
    

    Die Bitmap läd er kein problem. bei dem ICON krieg ich 1814"The specified resource name cannot be found in the image file." bin ich nur zu blind?
    Is doch alles gleich wie bei der Bitmap?

    Beide liegen im selbeen RC und die wird zur RES und dann eingebunden...

    Elektronix schrieb:

    Danke für das Kompliment, ist aber etwas übertrieben...

    Nein ihr habt echt immer gedult mit mir, find ich total klasse!

    [edit]"ICON_0 ICON
    MOVEABLE PURE LOADONCALL DISCARDABLE
    LANGUAGE LANG_NEUTRAL, 0
    {" das ist der eintrag in der RC

    [edit]meine EXE hat auch das logo von dem ICON...



  • Dein Icon-ID ist mit ICON_0 identifiziert. Das ID ist per #Define in der Resource.h mit einer Integer-(bzw. Long)-Konstante belegt.

    LoadIcen erwartet als 2. Parameter einen Long, Du hast einen String angegeben. Du müßtest halt als 2. Parameter die ID aus der Resourc.h angeben oder MAKEINTRESSOURCE(Icon_0) einsetzen.



  • Ok das habe ichnicht beachtet, nur welchen wert muss ich "MAKEINTRESOURCE" übergeben wenn bei mir nur im RC file steht

    ICON_0 ICON
    MOVEABLE PURE LOADONCALL DISCARDABLE
    LANGUAGE LANG_NEUTRAL, 0
    {
    

    ? da steht ja nicht

    1001 ICON_0 ICON
    MOVEABLE PURE LOADONCALL DISCARDABLE
    LANGUAGE LANG_NEUTRAL, 0
    {
    

    dann würd ich ja 1001 übergeben xD...
    soll ich 0 übergeben?

    [edit]es gibt keine resource.h



  • = LoadIcon(GetModuleHandle(NULL),
                                MAKEINTRESOURCE(ICON_0));
    


  • error: 'ICON_0' undeclared
    

    [edit]

    HICON LoadIcon(      
        HINSTANCE hInstance,
        LPCTSTR lpIconName
    );
    

    2. != LONG



  • Man lippoliv, lies doch mal de Petzold. Es sollte eine Selbstverständlichkeit sein, daß man sich ERSTMAL gründlich informiert (Literatur gibt es wahrlich genug!) und dann bei Unklarheiten Fragen stellt. Nicht sofort drauf los stürzen, wenn man 0 Ahnung hat, was man da tut. Das nervt mich auch einfach als regelmäßiger Leser des Forums. Es verstößt gegen die Netikette, mit der es in diesem Forum leider alles andere als genau genommen wird. Einen schönen Tag noch.



  • In dem Petzold -der ja sehr bekannt ist- steht also wirklich alles drinn ja?

    Ich habe um Tutorials gebeten, darauf hat keiner angesprochen, ich habe selber gesucht habe immer nur sachen gefunden die mit VC++ oder sonstwas gemacht werden, aber nicht mit C wo man wirklcih alles machen muss (RC Datei selber erstellen, sie irgendwie mitkompilieren und dann noch die Daten raussuchen[hier stimmt es mit den andern sachen überein]) und ich hatte es schon fertig, die BITMAP läuft...

    Jetzt geht der ICON nicht, ich dachte es währe das selbe... Nein es ist nicht das selbe..
    Wenn du mir ein Thread zeigen würdest wo ca. dieses Problem behandelt wird... währ ich dir dankbar, aber verbring nicht zuviel Zeit damit, ich bin mir sicher du findest dazu nichts.

    In den meistenn RCs ist der aufbau "ID_NR ELEMENT_NAME ELEMENT_TYP" und alle haben noch irgendeine resource.h [...]
    Wenn ich sowas nicht habe, alles nichts... ist das dann "gegen die Nettikette" zu fragen?
    Ja klar frage ich viel, aber liegt das evtl daran das "ihr" einfach nur sagt "Neuen Button ins form", "Neuen Dialog im RC" oder "x = image.width" und ich dafür ewig brauche, viel Quellcode und so, da ich soeine Umgebung -noch- nicht nutzen soll...

    Das ist jetzt alles nicht unfreundlich gemeint, nur komm ich mir hier langsam falsch vor, wieso gibt es nicht mal ganz Konkret ein "WinAPI - C" Forum wo wirklich alles getrennt ist, oder ein "tag" für ein Thread wo man einträgt "Programmiersprache: C"... 🙂

    Ich stimme mit deinem Beitrag überein, und ich fühle mich auch nicht gerade super, hier andauernd zu fragen, nur findet man halt zu C nicht viel, zumindest nicht über Google, da alles C++/C# treffer sind. 😞

    Tortzdem danke für deine ehrlichkeit, also wenn jemand noch nen Tut zu diesem Thema hat... Bin dafür gerne offen.

    [edit]ich habe keinen Petzold, werd mir den aber wohl holen müssen.



  • lippoliv schrieb:

    error: 'ICON_0' undeclared
    

    [edit]

    HICON LoadIcon(      
        HINSTANCE hInstance,
        LPCTSTR lpIconName
    );
    

    2. != LONG

    Oops, hast Recht, hab was Falsches gesagt.
    Dein "ICON_0" ist die ID des Icons, das einer Ineger-Zahl entspricht (in Resource.h eingesetzt). Also Du übergibst eine Zahl an einen String-Parameter. MAKEINTRESOURCE löst das Problem.

    Hast Du es mal damit versucht:

    wc.hIcon = LoadIcon(GetModuleHandle(NULL),
                                    MAKEINTRESOURCE(IDI_QUESTION));
    

    (Lädt ein Standardicon)

    Hier ein Tutorial, wo einiges zu Resourcen steht:
    http://pronix.linuxdelta.de/C/win32/win32_4.shtml



  • #define IDI_0 1000
    
    #define IDB_0 1001
    

    *.rc

    1000 ICON
    MOVEABLE PURE LOADONCALL DISCARDABLE
    LANGUAGE LANG_NEUTRAL, 0
    
    //und
    
    1001 BITMAP
    MOVEABLE PURE LOADONCALL DISCARDABLE
    LANGUAGE LANG_NEUTRAL, 0
    

    (er bennent die automatisch um, dann hab ich das #inlcude wieder rausgenommen)

    if(  NULL != (myRes = FindResource( GetModuleHandle(NULL), MAKEINTRESOURCE( IDB_0 ), RT_BITMAP ) ) &&
    		 NULL != (logo = LoadBitmap( GetModuleHandle(NULL), MAKEINTRESOURCE( IDB_0 ) ) ) )
    

    und

    if(  NULL != ( myRes = FindResource( GetModuleHandle(NULL), MAKEINTRESOURCE( IDI_0 ), RT_ICON ) ) &&
    			 NULL != ( myIcon = LoadIcon( GetModuleHandle(NULL), MAKEINTRESOURCE( IDI_0 ) ) ) )
    

    das IDB wird angezeigt, das IDI nicht... verrückt?
    Immernoch Fehler 1814

    [edit]war ein fehler meinerseits.. egal ist gelöst!


Anmelden zum Antworten