Newsgroup: it.comp.programmare.win32
Titolo: AIUTONE ENORME (lungo)

Scusa se vi chiedo una cosa del genere ma è 1 mese che ci combatto e non
riesco a creare una finestra figlia.
Ho 2 libri ed ognuno mi dice cose differenti , ho chiesto anche un sorgente
da studiare ma non ciò capito nulla.
Vi volevo dire che sono un neofila quindi cercate di non essere troppo
dettagiati e s eè possibile spiegatemi come si fa almeno un domani lo posso
fare da solo.
Il sorgente è questo:
****************Inizio sorgente*********************
/* Ricettario */
#include <windows.h>
#include <winuser.h>
#include "menu.h"
#include <string.h>
LRESULT CALLBACK WindowFunc (HWND, UINT, WPARAM, LPARAM); /*Funzione della
finestra di windows*/
BOOL CALLBACK DialogFunc (HWND, UINT, WPARAM, LPARAM); /*Funzione della
finestra di dialogo*/
char szWinName[] = "Ricettario";/* Nome della finestra*/
HINSTANCE hInst;
HWND hwnd;
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs,
int nWinMode)
{         /*Inizia winmain()*/
  HWND hwnd;     /*Variabile del handle della finestra principale */
  MSG msg;     /*ancora non l'ho capito*/
  WNDCLASSEX wcl, wc;    /*Variabiel della classe di windows*/
  HACCEL hAccel;    /*Variabile del menu rapido*/
/* Definizione di una classe di finestra */
 wcl.cbSize = sizeof(WNDCLASSEX);
 wcl.hInstance = hThisInst;    /*Handle dell' istanza*/
 wcl.lpszClassName = szWinName;   /*Puntatore all'array che contiene il nome
della finestra*/
 wcl.lpfnWndProc = WindowFunc;   /*Funzione della finestra*/
 wcl.style =0;       /*Stile della finestra*/
 wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);   /*Carica l'icona vicino la
barra del titolo*/
 wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO);   /*Carica l'icona del pulsante
nella barra di controllo*/
 wcl.hCursor = LoadCursor(hThisInst, "CURSORE");   /*Carica il cursore per
il programma*/
 wcl.lpszMenuName = "MENU_RICETTARIO";    /*Menu definito*/
 wcl.cbClsExtra = 0;      /*Informazioni extra*/
 wcl.cbWndExtra = 0;      /*non necessarie*/
 wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);  /*Colora lo
sfondo della finestra*/
/* Registrazione della finestra */
 if(!RegisterClassEx(&wcl)) return 0;
 /* Crea le cartelle del programma*/
  hwnd = CreateWindow(
  szWinName,       /*Nome della classe di finestra*/
 "Ricettairo ",  /*Titolo*/
  WS_OVERLAPPEDWINDOW,    /*Stile della finestra*/
  CW_USEDEFAULT,      /*Coordinate x decide windows*/
  CW_USEDEFAULT,      /*Coordiante y decide windows*/
 CW_USEDEFAULT,      /*Larghezza decide windows*/
 CW_USEDEFAULT,      /*Altezza decide windows*/
 HWND_DESKTOP,      /*Nessuna finestra superiore*/
 NULL,        /*usa la classe menu*/
 hThisInst,       /*Handle di questa istanza del programma*/
 NULL        /*Nessun argomento aggintivo*/
 );
 CreateDirectory ("c:/ricettario", NULL);
 CreateDirectory ("c:/ricettario/antipasti", NULL);
 CreateDirectory ("c:/ricettario/primi", NULL);
 CreateDirectory ("c:/ricettario/secondi", NULL);
 CreateDirectory ("c:/ricettario/dolci", NULL);
  hInst = hThisInst; /*salva l'handle dell'istanza corrente */
/*Visualizza la finestra*/
 ShowWindow(hwnd,nWinMode);    /*Funzione che visualizza la finestra*/
 UpdateWindow(hwnd);      /*Aggiorna la finestra*/
/* Carice i tasti di scelta rapida*/
hAccel = LoadAccelerators (hThisInst, "ACCEL_RICETTARIO");
/*Crea un ciclo di messaggi*/
 while(GetMessage(&msg,NULL,0,0))  /*Se la risposta della funzione è 0
termina il programa*/
 {
  if(!TranslateAccelerator(hwnd, hAccel, &msg)){
   TranslateMessage(&msg);    /*Consente l'uso della tastiera*/
   DispatchMessage(&msg);    /*Restituisce il controllo a Windows*/
  }
 }
 return msg.wParam;
}           /*Chiusura winmain()*/
/*Questa funzione viene chiamata da windows e riceve*/
/*i messaggi provenienti dalla coda*/
 LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
lParam)
 {
  switch(message) {
       case WM_COMMAND:
        switch (LOWORD(wParam)) {
         case IDM_INFO:
          DialogBox (hInst, MAKEINTRESOURCE(DLG_INFO) , hwnd , (DLGPROC)
DialogFunc);
          return 1;
          break;
         case IDM_CONT:
          MessageBox (hwnd, "Sito Web : 
web.tiscali.it/ivotek\n\n\nE-MAIL
ivo...@yahoo.it
","Contattare il produttore", MB_OK | MB_ICONINFORMATION);
          return 1;
          break;
         case IDM_SOMMAR:
          MessageBox (hwnd, "Sommario non disponibile", "Informazioni",
MB_OK | MB_ICONINFORMATION);
          return 1;
          break;
         case IDM_RICER:
          MessageBox (hwnd, "Ricerca non disponibile", "Informazioni", MB_OK
| MB_ICONINFORMATION);
          return 1;
          break;
         case IDM_TAGLIA:
         case IDM_INCOLLA:
         case IDM_COPIA:
         case IDM_CANCELLA:
          MessageBox (hwnd, "Controlli non disponibili", "Informazioni",
MB_OK | MB_ICONINFORMATION);
          return 1;
          break;
         case IDM_NUOVA_RIC:
         case IDM_RICER_TITOLO:
          DialogBox (hInst, MAKEINTRESOURCE(DLG_NUOVA_RIC), hwnd, (DLGPROC)
DialogFunc);
          return 1;
          break;
         case IDM_RICER_FOTO:
          MessageBox (hwnd, "Non ancora disponibile", "Informazioni", MB_OK
| MB_ICONINFORMATION);
          return 1 ;
          break;
         case IDM_MODIF_RIC:
          DialogBox (hInst, MAKEINTRESOURCE(DLG_MODIF), hwnd, (DLGPROC)
DialogFunc);
          return 1;
          break;
         case IDM_SALVA_MODIF:
         case IDM_SALVA_RIC:
         case IDM_STAMP_INGRED:
         case IDM_STAMP_PREPARAZ:
         case IDM_STAMP_TUTT:
          MessageBox (hwnd, "Non ancora disponibile", "Informazioni", MB_OK
| MB_ICONINFORMATION);
          return 1;
          break;
        }
       case WM_DESTROY:  /*Il comado richiama la funzione */
        PostQuitMessage(0); /*che passa il parametro WM_QUI che detemina la
chiusura della finestra */
        break;
       default:   /*Tutti gli altri comandi vengono elaborati da Windows*/
        return DefWindowProc(hwnd, message, wParam, lParam);
  }
  return 0;
 }
BOOL CALLBACK DialogFunc(HWND hdwnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
 switch(message) {
  case WM_COMMAND:
   switch (LOWORD(wParam)){
    case IDD_CHIUDI:
    case WM_DESTROY:
     EndDialog (hdwnd, 0);
     return 1;
    case IDD_CONT:
     MessageBox(hdwnd, "testo", "titolo",MB_OK);
     return 1;
     break;
   }
 }
 return 0;
}
******************fine sorgente*************************
e non so dove inserire le varie funzioni.
So che devo registrare la classe poi creare la finestra , ma dove fuori o
dentro la funzione WinMain()
Dove va creata la finestra nello switch?
Insomma sono confuso ed inesperto datemi una mano o almeno consigliatemi un
sito dove posso trovare  queste spiegazioni.
Vi ringrazio per il tempo perso e l'aiuto.
Ciao Ciao

http://aleax.supereva.it/TutWin32/index.htm

 
http://aleax.supereva.it/TutWin32/index.htm
GRAZIE TANTE

