Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - WINAPI: I MESSAGI AIUTO!!
Forum - C/C++ - WINAPI: I MESSAGI AIUTO!!

Avatar
xVince (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/12/2010

Segnala al moderatore
Postato alle 18:24
Sabato, 11/12/2010
Ciao a tutti, scusate se ho sbagliato sezione ma sono nuovo anche se seguo già da un po pierotofy.it che mi ha aiutato davvero molto col python :)

Allora la mia domanda è questa:

Sempre dal vostro forum tramite il bottone cerca( in una discussione) ho trovato questo sito: http://www.aleax.it/TutWin32 che devo dire mi sta aiutanto davvero molto con le winapi.

Il mio problema è che sono arrivato alla quinta lezione ( i messaggi ) quando vado a compilare e ad eseguire il mio programma ( main.c ) mi da i seguenti errori :

1.  C:\Users\Administrator\Documents\DialogProcComplete\main.c In function `WinMain':


2.   C:\Users\Administrator\Documents\DialogProcComplete\main.c `unaDlgProc' undeclared (first use in this function)

3.      (Each undeclared identifier is reported only once

4.       for each function it appears in.)


5.      C:\Users\Administrator\Documents\DialogProcComplete\Makefile.win [Build Error]  [main.o] Error 1



Premetto che Uso dev-c++ 4.9.9.2.


Ciao xVince Grazie a tutti in anticipo per l'aiuto!

PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 19:31
Sabato, 11/12/2010
no, guarda che forse non hai capito bene il tutorial che stai seguendo.

In un file .rc, che è un file di risorse, devi dichiarare solamente la "risorsa", cioé

Codice sorgente - presumibilmente C/C++

  1. MioDialogo DIALOG DISCARDABLE  0, 0, 186, 92
  2. STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
  3. CAPTION "Un Dialogo vuoto"
  4. FONT 8, "MS Sans Serif"
  5. BEGIN
  6. END



mentre il resto, cioé la procedura scritta in codice C, devi dichiararla in un file .c ovviamente. Non devono stare nello stesso file.

Ti consiglio di imparare prima le basi del C(quindi la funzione dei file .rc, .h, .c) e di prenderti un vero libro per imparare la programmazione Win32(per esempio quelli di Charles Petzold sono ottimi)

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 19:00
Sabato, 11/12/2010

1) Lascia perdere dev-cpp, scarica visual c++ express che è centomila volte meglio

2) quegli errori indicano che non hai dichiarato la windowproc della finestra, quando chiami la registerclass c'è un campo della WNDCLASS che rappresenta l'indirizzo della funzione che gestisce i messaggi che il sistema manda alla finestra. Quella funzione non è definita.

PM
Avatar
xVince (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:02
Sabato, 11/12/2010
Ciao!

Grazie mille x la tempestiva risposta sto penando per risolvere questo problema !

ho scarica visual c++ express 2010 e l'ho installato

P.S sarà che sono nabbo ma l'interfaccia di devcpp mi risulta molto + amichevole rispetto quella di visual

ora guardo il problema e vedo GRz mille ora ti faccio sapere!

PM
Avatar
xVince (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:09
Sabato, 11/12/2010
Allora SCUSA L'IMMENSA IGNORANZA.

non ho capito bene cosa devo dichiarare;
io nel file miodialogo.rc  ho inserito questo codice
Codice sorgente - presumibilmente C++

  1. #include <windows.h>
  2.  
  3. MioDialogo DIALOG DISCARDABLE  0, 0, 186, 92
  4. STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
  5. CAPTION "Un Dialogo vuoto"
  6. FONT 8, "MS Sans Serif"
  7. BEGIN
  8. END
  9. BOOL CALLBACK unaDlgProc(HWND hwndDlg,
  10.   UINT uMsg, WPARAM wParam, LPARAM lParam)
  11. {
  12.     if(uMsg==WM_CLOSE) {
  13.         EndDialog(hwndDlg, 0);
  14.         return TRUE;
  15.     }
  16.     return FALSE;
  17. }



io "unaDlgProc" l'ho dichiarata no?

lool in questa lezione non ci sto capendo nulla.

Ultima modifica effettuata da xVince il 11/12/2010 alle 19:09
PM
Avatar
xVince (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:27
Sabato, 11/12/2010
Testo quotato

Postato originariamente da HeDo:


1) Lascia perdere dev-cpp, scarica visual c++ express che è centomila volte meglio

2) quegli errori indicano che non hai dichiarato la windowproc della finestra, quando chiami la registerclass c'è un campo della WNDCLASS che rappresenta l'indirizzo della funzione che gestisce i messaggi che il sistema manda alla finestra. Quella funzione non è definita.




Ho rifatto il progetto in visual c++ , sono rimasto un po deluso dal fatto che nella versione express i file .rc non possano essere modificati :d ,vabbè.

comunque avevi ragione anche in visual c++ mi da lo stesso errore:
Codice sorgente - presumibilmente C/C++

  1. ------ Inizio compilazione: Progetto: Dialog, Configurazione: Debug Win32 ------
  2.   Dialog.cpp
  3. c:\users\administrator\documents\visual studio 2010\resource-build\finestra\dialog\dialog\dialog.cpp(10): error C2065: 'unaDlgProc': identificatore non dichiarato
  4. ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========



il problema è che da totale ignorante non ho capito cosa devo dichiarare. Spero in un tuo aiuto :)

PM
Avatar
xVince (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:35
Sabato, 11/12/2010
Grazie per la risposta infatti ci stavo pensando di prendermi un libro;

Io mi sono Avvicinato da poco al c e il passagio da linguaggi side server come php a c mi sta risultando impegnativo.

Per il libro tu quali libro mi consiglieresti di comprare ?

Io l'altro giorno sono andato in libreria è ho trovato molti libri per imparare il c ma sopratutto libri sul c++ e anche libri del tipo "imparare il c in 24 ore ":asd: ( del tutto inutili )  Ho anche provato ha farmi consigliare dal commesso che, mi è sembrato che sapesse meno di me.

Percio ti rivolgo di nuovo la domanda, Qual è il libro migliore per imparare a programmare in c?

Ultima modifica effettuata da xVince il 11/12/2010 alle 19:44
PM
Avatar
xVince (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:22
Sabato, 11/12/2010
Grazie mille a tutti ma sopratutto grazie a lorenzo, finalmente ci sono riuscito GRAZIE MILLE!!

il codice andava nel file main cosi:
Codice sorgente - presumibilmente C++

  1. #include <windows.h>
  2.  
  3. BOOL CALLBACK unaDlgProc(HWND hwndDlg,
  4.   UINT uMsg, WPARAM wParam, LPARAM lParam)
  5. {
  6.     if(uMsg==WM_CLOSE) {
  7.         EndDialog(hwndDlg, 0);
  8.         return TRUE;
  9.     }
  10.     return FALSE;
  11. }
  12.  
  13. int WINAPI WinMain(HINSTANCE hInstance,
  14.                      HINSTANCE hPrevInstance,
  15.                      LPSTR     lpCmdLine,
  16.                      int       nCmdShow)
  17. {
  18.     return DialogBoxParam(0,"MioDialogo",
  19.         0,unaDlgProc,0);
  20. }


PM