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++ - creare gui con win32 api...stack corrupted error..sono principiante..aiutatemi
Forum - C/C++ - creare gui con win32 api...stack corrupted error..sono principiante..aiutatemi

Avatar
phate89 (Normal User)
Newbie


Messaggi: 1
Iscritto: 07/08/2009

Segnala al moderatore
Postato alle 11:18
Venerdì, 07/08/2009
salve a tutti... sto provando per la prima volta un programma con interfaccia grafica in c++...ho usato il c++ per poco solo con la console però un'idea del funzionamento me lo sono fatto...per creare l'interfaccia grafica sto seguendo [URL="http://www.aleax.it/TutWin32/p7.htm"]qusta guida[/URL] che mi è sembrata molto completa..
seguendo il loro esempio ottengo un programma cosi:
Codice sorgente - presumibilmente C++

  1. #define STRICT
  2. #define WIN32_LEAN_AND_MEAN
  3. #include <windows.h>
  4. #include <string>
  5. BOOL CALLBACK unaDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
  6. {
  7.         if(uMsg==WM_CLOSE)
  8.         {
  9.                 EndDialog(hwndDlg, 0);
  10.                 return TRUE;
  11.         }
  12.         else if(uMsg==WM_COMMAND)
  13.         {
  14.                 WORD wNotifica = HIWORD(wParam);
  15.                 WORD wId = LOWORD(wParam);
  16.                 if(wNotifica == STN_CLICKED &&  wId == 101)
  17.                 {
  18.                         HWND hStat = (HWND)lParam;
  19.                         char buff[6];
  20.                         const char* pTesto;
  21.                         SendMessage(hStat, WM_GETTEXT, 6, (LPARAM)buff);
  22.                         if(buff[0]=='C') pTesto = "Salve";
  23.                         else pTesto = "Ciao!";
  24.                         SendMessage(hStat, WM_SETTEXT, 0, (LPARAM)pTesto);
  25.                         return TRUE;
  26.                 }
  27.         }
  28.         return FALSE;
  29. }
  30. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) {
  31.         DialogBoxParam(0,L"MioDialogo",0,unaDlgProc,0); return 0;
  32. }



con questo che è il file dell'interfaccia grafca (MIODIALOGO.rc)
Codice sorgente - presumibilmente C/C++

  1. #include <windows.h>
  2. MioDialogo DIALOG DISCARDABLE 0, 0, 186, 92
  3. STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
  4. CAPTION "Un Dialogo vuoto"
  5. FONT 8, "MS Sans Serif"
  6. BEGIN
  7. CONTROL "Ciao!", 101, "STATIC", SS_CENTER|WS_BORDER|SS_NOTIFY, 60, 40, 40, 10
  8. END



però quando lo eseguo e clicco sul label con la scritta "Ciao!" ricevo questo errore:
Run-Time Check Failure #2 - Stack around the variable 'buff' was corrupted.
e la variabile ptesto contiene una serie di caratteri cinesi...
per fare il programma uso visual studio 2008 in un progetto win32..dove sbaglio? come posso risolvere?

PM Quote