[C++/Win32] Menu controleren vanuit programma

Pagina: 1
Acties:

  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
(ahum, windowsAPI is t :P )

Menu's zijn meestal resources in je project. Hier een voorbeeld van mijn menu:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
MENU_HOOFD MENU DISCARDABLE 
BEGIN
    POPUP "&Bestand"
    BEGIN
        MENUITEM "&Nieuw",                      MENU_BESTAND_ID_NIEUW
        MENUITEM "&Openen",                     MENU_BESTAND_ID_OPENEN
        MENUITEM "Op&slaan",                    MENU_BESTAND_ID_OPSLAAN
        MENUITEM SEPARATOR
        MENUITEM "E&xel invoegen",              MENU_BESTAND_ID_INVOEGEN
        MENUITEM SEPARATOR
        MENUITEM "Pagina inste&llingen",        MENU_BESTAND_ID_PAGINA
        MENUITEM "&Printen",                    MENU_BESTAND_ID_PRINTEN
        MENUITEM SEPARATOR
        MENUITEM SEPARATOR
        MENUITEM "Afsluiten",                   MENU_BESTAND_ID_EIND
    END
    POPUP "Be&werken"
    BEGIN
        MENUITEM "-NOT IN USE-",                MENU_BEWERKEN_ID_XXX
    END
    POPUP "Beel&d"
    BEGIN
        MENUITEM "O&rder",                      MENU_BEELD_ID_ORDER
        MENUITEM "&Product",                    MENU_BEELD_ID_PRODUCT
        MENUITEM "&Klant",                      MENU_BEELD_ID_KLANT
        MENUITEM SEPARATOR
        MENUITEM "&Zoeken",                     MENU_BEELD_ID_ZOEKEN
    END
    POPUP "&Help"
    BEGIN
        MENUITEM "&Info",                       MENU_HELP_ID_INFO, HELP
    END
END


Nu wil ik graag 'on the fly' bestandsnamen kunnen zetten tussen de de SEPERATORS bij de menuoptie 'begin'.

Het stomme is dat ik het in eigenlijk elk programma zie, maar nergens op internet die manier tegen kom :?

[ Voor 22% gewijzigd door Xorgye op 01-03-2006 14:35 . Reden: code ff in 'codetag' zetten... ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:11

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je denkt verkeerd, je hoeft je resource niet aan te passen om zoeits te doen. Je moet een menu maken uit je resource om die vervolgens te manipuleren. Je kan toch gewoon het menu van je applicatie opvragen? En daar kun je dan toch gewoon bewerkingen op los laten?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
ai... daar zit t m juist: ik weet hoe ik gewone tekstvelden kan manipuleren, knoppen kan manipuleren, windows messages kan afvangen en verwerken... maar ik kan het trefwoord niet vinden om op msdn te zoeken naar hoe deze dingen te manipuleren...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:11

.oisyn

Moderator Devschuur®

Demotivational Speaker

Kom op zeg, open de MSDN, ga naar User interface -> windows management -> windows user interface -> resources -> menus. Of browse in de index simpelweg naar "menus". Of je gaat naar de documentatie van functies die je gewoon kunt raden, zoals GetMenu() of CreateMenu(), en kijk wat voor links daar in het See Also stukje staan. Of je doet gewoon een search op "Menus". En als je op google zoekt naar "c++ win32 tutorial" kom je ook zat hits tegen.

Je gaat me niet vertellen dat je dat niet hebt kunnen vinden als je daadwerkelijk de moeite hebt gedaan om het te vinden.

[ Voor 63% gewijzigd door .oisyn op 01-03-2006 14:59 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Ik heb er daadwerkelijk moeite voor gedaan, k ga gelukkig neit zo maar naar n forum toe en probeer alles eerst zelf op te lossen.

Maar misschien omdat t zo voor de hand ligt dat ik r gewoon nie op kwam om te zoeken via de menubewerk functies...

Ach, een programma met de deadline overmorgen en al wekenlang problemen met exel en mysql implementeren... t maakt me gewoon niet helemaal helder meer.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-02 11:25

Bosmonster

*zucht*

In je titel heb je het over C# C++, welke van de twee is het eigenlijk, want voor het manipuleren van menu's is dit namelijk appel en peer.

  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Ik denk dat ik er al uit ben, een geduldige admin heeft me gewezen op een aantal functies die handig zijn om het uiteindelijke onderwerp te vinden ;)

Maar ach, welke C t precies is doet er volgens mij niet toe... het gaat mij om de functies die nodig zijn, niet de syntaxes om gegevens te bewerken. De meeste functies zijn naar alle C versies over te zetten als je wat gedult hebt.

[ Voor 1% gewijzigd door Xorgye op 01-03-2006 15:24 . Reden: mod? t is n admin :P ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-02 11:25

Bosmonster

*zucht*

Dan neem ik maar aan dat je niet met .NET bezig bent...

  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Ach, het kan me eigenlijk weinig schelen waar ik mee bezig ben... door t bos zijn de bomen al lang niet meer zichbaar en k ben blij dat k gewoon weer verder kan.

Kan dat gewoon niet in de FAQ, uitleg wat waarbij hoort? T is een behoorlijke lijst... maar t kan ook gewoon al helpen dat als je weet welke taal t is je dan daarop beter kunt zoeken en niet meteen een topic hoeft te maken...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:11

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat is natuurlijk onzin, je weet toch wel in welke taal je werkt? Op het moment dat je dat niet weet moet je jezelf eens achter je hoofd krabben en afvragen waarom je hier überhaupt een topic opent :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Nee... ik weet niet met welke taal ik werk ;-)

MSDN is officieel voor C, maar je kunt ook aan het werk met C++ want ze geven vaak als VC++ builder als compiler en werkomgeving...

Daarbij is op diezelfde MSDN ook alles te vinden over .NET, een serie andere programmeertalen dan C en wat dan ook... gewoon zwaar irritant af en toe als ik iets zoek :'(
Ik heb meestal 1 klein dingetje nodig en daar moet je dan een hele dag naar zoeken... bah...


*maar sluit deze draad maar hoor, ik las de reactie en wilde graag nog ff een grote frustratie van me uitspreken :+ *

[ Voor 13% gewijzigd door Xorgye op 10-04-2006 00:22 ]


  • PoweRoy
  • Registratie: April 2002
  • Laatst online: 22-02 20:55

PoweRoy

funky!

msdn is voor veel talen ja, maar ik neem aan dat je wel de syntax weet van de taal waar je nu in werkt weet anders ben ik benieuwd naar veel syntax errors :D

[This space is for rent]


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Gelukkig staan er bij bijna elk concept voorbeelden voor meerdere talen op MSDN.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:11

.oisyn

Moderator Devschuur®

Demotivational Speaker

Xorgye schreef op zondag 09 april 2006 @ 23:25:
Nee... ik weet niet met welke taal ik werk ;-)

MSDN is officieel voor C, maar je kunt ook aan het werk met C++ want ze geven vaak als VC++ builder als compiler en werkomgeving...
klok... klepel... :)
VC++ Builder bestaat niet. Borland C++ Builder wel, maar die is zoals de naam al zegt van Borland, niet van Microsoft. Microsoft heeft Visual C++, die onderdeel uitmaakt van Visual Studio. Zowel met BC++ Builder als met VC++ kun je C én C++ applicaties compileren.
De native win32 API is idd C, zodat je daarmee vanuit elke taal (C, C++, Pascal/Delphi, VB, ...) kunt interfacen. Dit had niet gekund als het C++ was geweest, maar dat wil ook niet meteen zeggen dat jouw applicatie in C geschreven moet zijn.
Daarbij is op diezelfde MSDN ook alles te vinden over .NET, een serie andere programmeertalen dan C en wat dan ook... gewoon zwaar irritant af en toe als ik iets zoek :'(
Ik heb meestal 1 klein dingetje nodig en daar moet je dan een hele dag naar zoeken... bah...
Dat is een kwestie van de offline variant gebruiken (de online variant suckt idd wegens gebrek aan filters), maar ik geloof dat ik in mijn tweede post al genoeg hints heb gegeven over de functienaam waarnaar je moet zoeken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Toch best knap als je kan programmeren zonder te weten in welke taal je eigenlijk bezig bent.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12-2025
.oisyn schreef op maandag 10 april 2006 @ 11:29:

De native win32 API is idd C, zodat je daarmee vanuit elke taal (C, C++, Pascal/Delphi, VB, ...) kunt interfacen. Dit had niet gekund als het C++ was geweest, maar dat wil ook niet meteen zeggen dat jouw applicatie in C geschreven moet zijn.
Nooit COM vanuit C gezien? Kan wel, is niet grappig.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Maakt mij het uit hoe ik dat programma nou noem... t moet doen wat ik wil dat het doet :P
.oisyn schreef op maandag 10 april 2006 @ 11:29:Dat is een kwestie van de offline variant gebruiken (de online variant suckt idd wegens gebrek aan filters), maar ik geloof dat ik in mijn tweede post al genoeg hints heb gegeven over de functienaam waarnaar je moet zoeken :)
Offline variant... klinkt heel behulpzaam. Zal r s naar zoeken ;)
En ja, ik heb zeker gevonden wat ik nodig had hoor. K heb het opgelost met de volgende constructie:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(MenuBalk == NULL)
{
  MenuBalk = LoadMenu(hInstanceHoofd, MAKEINTRESOURCE(MENU_HOOFD));
  SetMenu(/* handler van je window */, MenuBalk);
}

MENUITEMINFO nieuwitem;
nieuwitem.cbSize = sizeof(MENUITEMINFO);
nieuwitem.fMask = MIIM_TYPE | MIIM_ID;
nieuwitem.fType = MFT_STRING;
nieuwitem.dwTypeData =  /* naam vd menuoptie */;
nieuwitem.wID = /* ID */;
nieuwitem.cch = strlen(nieuwitem.dwTypeData);

InsertMenuItem(MenuBalk,/* na wel ID wil je m hebben*/, FALSE, &nieuwitem);

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:11

.oisyn

Moderator Devschuur®

Demotivational Speaker

d:)b

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1