PDA

Visualizza la versione completa : Programmazione win32. Interfaccie grafiche e menu


l4uk3
17-10-2010, 20:36
Salve ragazzi sono nuovo del forum, mi sembra abbastanza variegato come argomenti.

Allora il problema è il seguente.

Vorrei approfondire le mie capacità di programmazione di sistema, in particolare poichè all'uni ho quasi sempre usato linux, ho deciso di "cambiare sponda" e gettarmi un pò su windows tanto per toccare con mano la differenza tra i due.

Allo stato attuale, dopo che mi sono fatto Gestione File, Cartelle, Registro, Heap, Processi, Thread e Scheduling su windows, ora mi sono addentrato un pò nelle interfaccie grafiche.

Premetto che io al momento per questo argomento, che ho visto essere un pò delicato, uso il Dev C++, i restanti li ho sperimantati sia su VC++ che Dev.

In ogni caso ho capito un pò l'impostazione di base per una finestra in pratica si seguono tre passi.

Registrazione della WNDCLASSEX, creazione della finestra e messageloop.

Ora provavo un pò a capire come si gestiscono i menù in una finestra, e in particolare ho visto che è possibile gestirli utilizzando i file .rc (risorse) ora io ho provato un pò, e ho cercato qualche guida in giro, ho trovato qualcosa, ma nulla di chiaro per me.

Tanto per illustrarvi cosa ho fatto vi elenco i passi.

1. Creo un nuovo progetto, applicazione windows, lascio al momento così com'è, salvo il main come "main.cpp" ad esempio.
2. Creo poi un sorgente, chiamato ad esempio "main.h" in cui metto tutte le definizioni ad esempio.

#define ID_MENU 100
#define IDM_OPEN 101
#define IDM_SAVE 102

e via dicendo

3. Poi creo un'altro sorgente, un .rc per l'esattezza e ci metto dentro roba di questo tipo

#include <windows.h>
#include "main.h"

ID_MENU MENU
{
POPUP "&File"
{
MENUITEM "&Open...", IDM_OPEN
MENUITEM "&Save...", IDM_SAVE
}
}

4. Torno nel main.cpp e cerco nei campi dichiarati della WNDCLASSEX quello lpszMenuName e pongo

lpszMenuName = MAKEINTRESOURCE(ID_MENU)

5. Compilo e faccio partire il tutto, e funziona il programma, cioè non da errori, ma non c'è traccia del menù dichiarato.

Preciso che tutti i file stanno nella stessa cartella, e che la creazione del .rc è avvenuta inserendo una "nuova unità" nel progetto e salvandolo come .rc.

Per quanto ne so poi stesso il compilatore dovrebbe fare le conversioni dovute.

Ma allora perchè non funziona ciò?

Non è che qualcuno può fare un esempio dicendomi "passo passo" cosa fa? come ho fatto io adesso per intenderci. O mi dice gli errori che faccio nel mio procedimento.

Devo includere qualkos'altro nel progetto? non so non ho idea perchè non funzioni.

So che esistono delle API windows ad hoc per fare i menu, ma se iniziano a complicarsi penso mi confonderei a utilizzarle... i .rc mi farebbero risparmiare tempo e fatica credo.


Spero rispondiate, ciau
Luca

Loading