07/08/09 9:18
phate89
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="aleax.it/TutWin32/… guida[/URL] che mi è sembrata molto completa..
seguendo il loro esempio ottengo un programma cosi:
con questo che è il file dell'interfaccia grafca (MIODIALOGO.rc)
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?
seguendo il loro esempio ottengo un programma cosi:
#define STRICT #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <string> BOOL CALLBACK unaDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { if(uMsg==WM_CLOSE) { EndDialog(hwndDlg, 0); return TRUE; } else if(uMsg==WM_COMMAND) { WORD wNotifica = HIWORD(wParam); WORD wId = LOWORD(wParam); if(wNotifica == STN_CLICKED && wId == 101) { HWND hStat = (HWND)lParam; char buff[6]; const char* pTesto; SendMessage(hStat, WM_GETTEXT, 6, (LPARAM)buff); if(buff[0]=='C') pTesto = "Salve"; else pTesto = "Ciao!"; SendMessage(hStat, WM_SETTEXT, 0, (LPARAM)pTesto); return TRUE; } } return FALSE; } int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { DialogBoxParam(0,L"MioDialogo",0,unaDlgProc,0); return 0; }
con questo che è il file dell'interfaccia grafca (MIODIALOGO.rc)
#include <windows.h> MioDialogo DIALOG DISCARDABLE 0, 0, 186, 92 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Un Dialogo vuoto" FONT 8, "MS Sans Serif" BEGIN CONTROL "Ciao!", 101, "STATIC", SS_CENTER|WS_BORDER|SS_NOTIFY, 60, 40, 40, 10 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?
aaa