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 qusta guida che mi è sembrata molto completa..
seguendo il loro esempio ottengo un programma cosi:
Codice PHP:
#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)
Codice PHP:
#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?