Problem mit MSVC++ ID-Nummern usw..



  • hi!
    ich habe ein problem und zwar:
    ich hab MSVC++ und ein projekt gestartet.
    jetzt habe ich eine resourcen datei erstellt, in der ein menu programmiert ist. automatisch müsste in mein projekt auch eine RESOURCE.H headerdatei erstellt werden oder? das wird es bei mir nicht.(warum?). deshalb hab ich die IDnummer von meim menu (101) genommen und eine eigene RESOURCE.H erstellt:
    #define IDR_MENU1 101
    ...
    als nächstes habe ich die ID eingefügt:
    wc.lpszMenuName = MAKEINTRESOURCE (IDR_MENU1) ;
    ...
    ich hab es ohne fehlermeldung kompiliert aber es kam ein leeres fenster ohne irgentein menu..
    worum liegt es? was mach ich falsch? versteht ihr meine frage?(*g*), schonmal danke im vorraus!! ich freue mich über jedes lebenszeichen von euch!
    gez. chris



  • Bzgl. der "resource.h": diese wird AFAIK nur bei MFC Projekten automatisch erzeugt und Verwaltet...

    PS: Warum machst Du eigentlich kein MFC? UI Programme machen IMHO heutzutage eigentlich nur noch Masochisten mit der WinAPI...



  • Jochen Kalmbach schrieb:

    PS: Warum machst Du eigentlich kein MFC? UI Programme machen IMHO heutzutage eigentlich nur noch Masochisten mit der WinAPI...

    hey, du besserst dich. vor einigen wochen hättest du noch .NET vorgeschlagen 😉



  • diese wird AFAIK nur bei MFC Projekten automatisch erzeugt und Verwaltet

    Geht auch ohne MFC, in VC6: Menu "Datei" -> "Neu" -> "Resourcenscript".
    Als Dateiname "resource.rc" eingeben.
    Nun noch Resourcen erzeugen, "resource.h" includen, fertig.

    Falls nicht bereits automatisch geschehen, muss resource.rc noch dem Projekt hinzugefügt werden.



  • ok,danke ersmal!

    @jochen: ich hab noch sehr wenig ahnung von WIN-GUI programmierung, und zum reinkommen hab ich einfach mal API gewählt, ich weiss auch nicht was der unterschied zwischen API und MFC ist^^.

    @msg_: ich versteh es nochnicht so ganz: also ich hab per PROJECT>>ADD TO PROJECT>>NEW>> RESOURCE SCRIPT eine date: resource.h und resource.rc in mein projekt angelegt. wenn ich jetzt ein menu erstel (resource) wird dann folgene definition automatsch in resource,h eingegeben?:
    #define IDR_MENU1 101
    bei mir nicht, was bring mir also eine leere resource.h datei einzufügen?
    danke schonmal im voraus 👍



  • Fachmann schrieb:

    @jochen: ich hab noch sehr wenig ahnung von WIN-GUI programmierung, und zum reinkommen hab ich einfach mal API gewählt, ich weiss auch nicht was der unterschied zwischen API und MFC ist^^.

    MFC ist einfach eine "Klassenorintierte" sicht auf die API. Si ist (i.d.R.) einfacher zu handhaben, als reines WinAPI.
    Aber wenn Du mit GUI Programmierung anfangen willst, rate ich Dir zu C# und Windows-Forms... (kannst Du aber auch mit C++/CLI machen).
    Lad dir einfach mal das aktuelle VC++/C# 2005 Express runter...
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-130812.html



  • ok ich werd mich da mal schlau machen mit MFC. wenn MFC einfacher und besser ist, warum hat API dann noch so viel bedeutung?



  • Die WinAPI ist die Programmierschnittstelle zu Windows. Alles (bisherige) andere ist nur ein Wrapper um diese API.
    Warum es solche Wrapper gibt (wie z.B. die MFC) ist ganz einfach: Die WinAPI ist nicht ganz trivial und vorallem Subclassing und sonstige Dinge sind etwas aufwendig und in den Wrapper schon richtig gelöst...
    Die Wrapper verwenden auch nur die WinAPI... aber bieten eben oftmals eine einfachere Schnittstelle auf Ihre Funktionen...
    Der Trend in Windows geht aber weg von WinAPI (und deren Wrappern) in Richtun "managed code" (also Windows-Forms und Avalon).



  • na ich würd schon erstmal bei winapi bleiben. das ist schon gut so. später dann c# zu lernen ist dann ja eine sache von 1-2 wochen wenn du damit nur 'GUI machen willst.



  • @msg_: ich versteh es nochnicht so ganz: also ich hab per PROJECT>>ADD TO PROJECT>>NEW>> RESOURCE SCRIPT eine date: resource.h und resource.rc in mein projekt angelegt. wenn ich jetzt ein menu erstel (resource) wird dann folgene definition automatsch in resource,h eingegeben?:

    In meinem VC6 muss ich lediglich die *.rc-Datei anlegen, die *.h-Datei wird automatisch erzeugt und mit Werten versehen. Vielleicht passiert das bei Dir nicht, weil Du bereits manuell eine Header-Datei angelegt hast?



  • ok, MFC u.ä. baut auf API auf, deshalb erst API dann MFC.
    nun,
    genau da hängst, es wird keine resource.h datei erstellt. ich könnte ja eigentlich auch die genaue ID angeben:
    ... = MAKEINTRESOURCE (101);
    statt:
    ... = MAKEINTRESOURCE (IDR_MENU1);
    nur das geht beides nicht, deshalb habe ich gedacht, dass ich was mit den *.rc dateien falsch mach:
    NEU-NEUES PROJEKT-WINAPI
    dann rc datei rein:
    PROJEKT- ADD TO PROJEKT-NEW- RESOURCE TEMPLATE - ...
    jetz gibt es im dateibaum links einen ordner.
    ich klick ihn an und drücke in der datei darin INSERT und wähle MENU aus.
    dann erstell ich ein menu. jetzt drück ich auf ALLES SPEICHERN und in diesem moment wird bei dir eine resource.h datei bei HEADER FILES erstellt und bei mir nicht ? 😞
    vll liegt es an den programmeinstellungen aber ich bin da auch nicht fündig geworden 😕


Anmelden zum Antworten