Verständnisproblem Visual C++ & Resources



  • Hallo Coders!

    NACHTRAG: OMG!! Problem hat sich von selbst gelöst. Grund: Visual C++ legt ein define für "TEST" an, demnach hat das Menü "TEST" nicht mehr den Namen "TEST" sondern die ID 103 gehabt - und konntes deshalb nicht gefunden werden.

    HMPF...

    --------------------------------------------------------------------------------

    Ich habe ein Problem mit einer Menü-Ressource für ein reines WinAPI-Programm unter Visual C++ 5.0 und verstehe nicht so ganz warum es nicht klappt, zumal es bisher im Borland C++ Builder immer ohne Probleme geklappt hat (und Visual C++ macht es einem doch mit Ressourcen sogar erheblich einfacher).
    Ich hoffe das WinAPI-Forum ist hier richtig, da es sich ja um WinAPI handelt.

    Und zwar folgendes: Ich habe meine Window-Klasse so definiert:

    int WINAPI WinMain( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmdline, int cmd_show )
    {
    	MSG  		msg;
    	WNDCLASS 	wc;
    	const char 	szAppName[] = "TEST";
    
    	/* Remember the instance ID */
    	global_instance = instance;
    
    	/* Set up the window class */
    	wc.style			= CS_HREDRAW | CS_VREDRAW;
    	wc.lpfnWndProc		= WndProc;
    	wc.cbClsExtra		= 0;
    	wc.cbWndExtra		= 0;
    	wc.hInstance		= instance;
    	wc.hIcon			= LoadIcon( instance, MAKEINTRESOURCE( IDI_BASEICON) );;
    	wc.hCursor			= LoadCursor(NULL, IDC_ARROW);
    	wc.hbrBackground	= (HBRUSH)GetSysColorBrush(COLOR_MENU);
    	wc.lpszMenuName		= szAppName;
    	wc.lpszClassName	= szAppName;
    
    	/* Set up comman controls and register class */
    	if( !RegisterClass( &wc ) )
    	{
    		return -1;
    	}
    
    	.
    	.
    	.
    

    Ergo, ich setze mit

    wc.lpszMenuName		= szAppName;
    

    den Namen des Menüs für diese Fensterklasse auf "TEST".

    Meine Menü-Ressource sieht im RC-Script jetzt so aus (habe ich natürlich über die Visual C++ IDE erstellt):

    TEST MENU DISCARDABLE 
    BEGIN
        POPUP "FILE"
        BEGIN
            MENUITEM "NEW",                         ID_FILE_NEW
            MENUITEM "OPEN",                        ID_FILE_OPEN
        END
    END
    

    Das Resource-Script ist im Projekt eingebunden, zudem wird das Icon, welches ich ebenfalls als Resource angegeben habe ohne Probleme in die EXE mit erzeugt und auch korrekt angezeigt. Nur das Menü will nicht so recht 😡. Im Borland C++ Builder hat es bisher immer genauso funktioniert (nur da habe ich die Scripte immer noch von Hand editiert!). Und das sollte in VC++ doch nicht so schwer sein.

    Hat jemand vielleicht einen Lösungsansatz oder ist diese Problem evtl. bekannt? Wenn man nach "Visual C++ problem menu resource" sucht findet man nur Müll.

    Ich danke euch vorab schon mal für eure Hilfe!

    ~code_pilot


  • Mod

    Hast Du evtl. einen define für TEST geamcht, der die Ressource als ID bindet.

    Öffne mal die EXE datei als Ressourcen-Datei im VS. Dann kanst Du sehen ob und wie die Menu Ressource eingebunden wurde.


Anmelden zum Antworten