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++ - Non mi riconosce alcune funzioni...
Forum - C/C++ - Non mi riconosce alcune funzioni...

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 18:49
Venerdì, 26/10/2007
Ciao raga, ho qualche problema con un programma, ora vi mostro il sorgente:
Codice sorgente - presumibilmente C++

  1. #define WIN32_LEAN_AND_MEAN
  2. #include <windows.h>
  3.  
  4. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
  5.  
  6. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  7.                     PSTR szCmdLine, int iCmdShow)
  8. {
  9.      static TCHAR szAppName[] = TEXT ("HelloWin") ;
  10.      HWND         hwnd ;
  11.      MSG          msg ;
  12.      WNDCLASS     wndclass ;
  13.  
  14.      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
  15.      wndclass.lpfnWndProc   = WndProc ;
  16.      wndclass.cbClsExtra    = 0 ;
  17.      wndclass.cbWndExtra    = 0 ;
  18.      wndclass.hInstance     = hInstance ;
  19.      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
  20.      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
  21.      wndclass.hbrBackground = GetSysColorBrush(COLOR_3DFACE) ;
  22.      wndclass.lpszMenuName  = NULL ;
  23.      wndclass.lpszClassName = szAppName ;
  24.  
  25.      if (!RegisterClass (&wndclass))
  26.      {
  27.           MessageBox (NULL, TEXT ("This program requires Windows NT!"),
  28.                       szAppName, MB_ICONERROR) ;
  29.           return 0 ;
  30.      }
  31.      hwnd = CreateWindow (szAppName,                  // window class name
  32.                           "The Hello Program",        // window caption
  33.                           WS_OVERLAPPEDWINDOW,        // window style
  34.                           CW_USEDEFAULT,              // initial x position
  35.                           CW_USEDEFAULT,              // initial y position
  36.                           CW_USEDEFAULT,              // initial x size
  37.                           CW_USEDEFAULT,              // initial y size
  38.                           NULL,                       // parent window handle
  39.                           NULL,                       // window menu handle
  40.                           hInstance,                  // program instance handle
  41.                           NULL) ;                     // creation parameters
  42.  
  43.      ShowWindow (hwnd, iCmdShow) ;
  44.      UpdateWindow (hwnd) ;
  45.  
  46.      while (GetMessage (&msg, NULL, 0, 0))
  47.      {
  48.           TranslateMessage (&msg) ;
  49.           DispatchMessage (&msg) ;
  50.      }
  51.      return msg.wParam ;
  52. }
  53.  
  54. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  55. {
  56.      HDC         hdc ;
  57.      PAINTSTRUCT ps ;
  58.      RECT        rect ;
  59.  
  60.      switch (message)
  61.      {
  62.      case WM_CREATE:
  63.           PlaySound ("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC) ;
  64.           break;
  65.  
  66.      case WM_PAINT:
  67.           hdc = BeginPaint (hwnd, &ps) ;
  68.  
  69.           GetClientRect (hwnd, &rect) ;
  70.  
  71.           DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
  72.                     DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
  73.           EndPaint (hwnd, &ps) ;
  74.           break;
  75.  
  76.      case WM_DESTROY:
  77.           PostQuitMessage (0) ;
  78.           break;
  79.      }
  80.      return DefWindowProc (hwnd, message, wParam, lParam) ;
  81. }



E questi invece sono gli errori:
http://img139.imageshack.us/img139/4034/asdcn5.jpg

Come risolvo? :(

Ultima modifica effettuata da The Lizard King il 26/10/2007 alle 18:49
PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 22:23
Venerdì, 26/10/2007
Stai facendo delle chiamate alle API di windows e il solo windows.h non è sufficiente.
Aggiungi gli headers in questo modo:

#include <windows.h>
#include <winuser.h>
#include <winbase.h>

Poi aggiungi le librerie kernel32 e user32 al linker;)

PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 12:13
Sabato, 27/10/2007
Testo quotato

Postato originariamente da Dax89:

Stai facendo delle chiamate alle API di windows e il solo windows.h non è sufficiente.
Aggiungi gli headers in questo modo:

#include <windows.h>
#include <winuser.h>
#include <winbase.h>

Poi aggiungi le librerie kernel32 e user32 al linker;)



Ho aggiunto gli headers mancanti, ma come faccio ad aggiungere quelle 2 librerie? Da dove le prendo?? :-?

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 10:18
Domenica, 28/10/2007
Aggiungi al codice queste 2 direttive (non sono sicuro che funzioni):
Se usi DevCpp:

Codice sorgente - presumibilmente C/C++

  1. #pragma comment(lib, "libkernel32.o")
  2. #pragma comment(lib, "libuser32.o")



Se usi Visual Studio

Codice sorgente - presumibilmente C/C++

  1. #pragma comment(lib, "kernel32.lib")
  2. #pragma comment(lib, "user32.lib")


Ultima modifica effettuata da Dax89 il 28/10/2007 alle 10:19
PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 13:53
Domenica, 28/10/2007
Non sai come fare per Codeblocks? :-?

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 14:53
Domenica, 28/10/2007
Se usi gcc si fa come DevCpp.;)

Ultima modifica effettuata da Dax89 il 28/10/2007 alle 14:54
PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 20:24
Domenica, 28/10/2007
Grazie ma ho provato di tutto, non mi riconosce mai PlaySound() e le parti contenute in esso... forse abbiamo sbagliato librerie? :-?

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 17:32
Lunedì, 29/10/2007
Perchè l' API PlaySound risiede in winmm.dll
(credo che si chiami però PlaySoundA).

Aggiungi alle direttive include questa:

Codice sorgente - presumibilmente C/C++

  1. #include <winmm.h>



Poi correggi le direttive del linker con queste:

Codice sorgente - presumibilmente C/C++

  1. #pragma comment(lib, "libkernel32.a")
  2. #pragma comment(lib, "libuser32.a")
  3. #pragma comment(lib, "libwinmm.a")



Ultima modifica effettuata da Dax89 il 29/10/2007 alle 17:33
PM Quote
Avatar
The Lizard King (Member)
Rookie


Messaggi: 33
Iscritto: 10/06/2007

Segnala al moderatore
Postato alle 18:08
Lunedì, 29/10/2007
Non mi trova winmm.h "No such file or directory" :d

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo