Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
mi spiegate come fare a inserire un programma in una finestra che non sia come quella del ms-dos?
PROGRAM triplo;
VAR n:INTEGER;
begin
writeln(' Questo programma calcola il triplo di un numero dato ');
writeln;
writeln('Introduci un numero intero ');
readln(n);
n:=n*n*n;
writeln;
writeln(' Il numero scelto alla terza è ' ,n);
writeln;
writeln(' Premi enter per finire');
readln;
writeln( ' By Tullio Pizzuti');
readln;
end.
by netarrow: fixato il titolo
Ultima modifica effettuata da netarrow il 28/03/2010 alle 14:15
allora se usa windows lei e' fortunato.
Ecco il codice per una semplice applicazione windows:
{$APPTYPE GUI}
{$MODE DELPHI}
program WinHello;
uses
Strings, Windows;
const
AppName = 'Triplo di un numero';
//qui si controllano tutti gli eventi della finestra
function WindowProc(Window: HWnd; AMessage: UINT; WParam : WPARAM;
LParam: LPARAM): LRESULT; stdcall; export;
var
dc : hdc;//e' il device context: nel device context si fanno tutti i nostri disegni
//riguarda la grafica
ps : paintstruct;//e' un record per il disegno
r : rect;
begin
WindowProc := 0;
case AMessage of//amsesage e' un numero che ci da gli eventi che accadono
wm_paint:
begin
dc:=BeginPaint(Window,@ps);
GetClientRect(Window,@r);
DrawText(dc,'Introduci un numero intero',-1,@r,
DT_SINGLELINE );
EndPaint(Window,ps);
Exit;
end;
wm_Destroy:
begin
PostQuitMessage(0);
Exit;
end;
end;
//registrazione delle caratteristiche della finestra
function WinRegister: Boolean;
var
WindowClass: WndClass;
begin
WindowClass.Style := cs_hRedraw or cs_vRedraw;
WindowClass.lpfnWndProc := WndProc(@WindowProc);
WindowClass.cbClsExtra := 0;
WindowClass.cbWndExtra := 0;
WindowClass.hInstance := system.MainInstance;
WindowClass.hIcon := LoadIcon(0, idi_Application);
WindowClass.hCursor := LoadCursor(0, idc_Arrow);
WindowClass.hbrBackground := GetStockObject(WHITE_BRUSH);
WindowClass.lpszMenuName := nil;
WindowClass.lpszClassName := AppName;
Result := RegisterClass(WindowClass) <> 0;
end;
//crea la windows class. questa e' una classe che contiene le caratteristiche della
//nostra finestra
function WinCreate: HWnd;
var
hWindow: HWnd;
begin
hWindow := CreateWindow(AppName, 'Questo programma calcola il triplo di un numero dato',
ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,
cw_UseDefault, cw_UseDefault, 0, 0, system.MainInstance, nil);
if hWindow <> 0 then begin
ShowWindow(hWindow, CmdShow);
ShowWindow(hWindow, SW_SHOW);
UpdateWindow(hWindow);
end;
Result := hWindow;
end;
var
AMessage: Msg;
hWindow: HWnd;
begin
if not WinRegister then begin
MessageBox(0, 'Register failed', nil, mb_Ok);
Exit;
end;
hWindow := WinCreate;
if longint(hWindow) = 0 then begin
MessageBox(0, 'WinCreate failed', nil, mb_Ok);
Exit;
end;
while GetMessage(@AMessage, 0, 0, 0) do begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
Halt(AMessage.wParam);
end.
Per la compilazione sarebbe meglio usare freepascal o devpascal
ho trovato{$APPTYPE GUI}
{$MODE DELPHI}
program WinHello;
uses
Strings, Windows;
const
AppName = 'Triplo di un numero';
var
bottone:hwnd;
edit1,edit2:hwnd;
//qui si controllano tutti gli eventi della finestra
function WindowProc(Window: HWnd; AMessage: UINT; WParam : WPARAM;
LParam: LPARAM): LRESULT; stdcall; export;
var
dc : hdc;//e' il device context: nel device context si fanno tutti i nostri disegni
//riguarda la grafica
ps : paintstruct;//e' un record per il disegno
r : rect;
begin
WindowProc := 0;
case AMessage of//amsesage e' un numero che ci da gli eventi che accadono
wm_paint:
begin
dc:=BeginPaint(Window,@ps);
GetClientRect(Window,@r);
DrawText(dc,'Introduci un numero intero',-1,@r,
DT_SINGLELINE
EndPaint(Window,ps);
Exit;
end;
wm_Destroy:
begin
PostQuitMessage(0);
Exit;
end;
wm_Command : begin
if lParam = Bottone then MessageBeep (mb_OK);
if lparam = edit1 then edit;
end;
end;
//registrazione delle caratteristiche della finestra
function WinRegister: Boolean;
var
WindowClass: WndClass;
begin
WindowClass.Style := cs_hRedraw or cs_vRedraw;
WindowClass.lpfnWndProc := WndProc(@WindowProc);
WindowClass.cbClsExtra := 0;
WindowClass.cbWndExtra := 0;
WindowClass.hInstance := system.MainInstance;
WindowClass.hIcon := LoadIcon(0, idi_Application);
WindowClass.hCursor := LoadCursor(0, idc_Arrow);
WindowClass.hbrBackground := GetStockObject(GRAY_BRUSH);
WindowClass.lpszMenuName := nil;
WindowClass.lpszClassName := AppName;
Result := RegisterClass(WindowClass) <> 0;
end;
//crea la windows class. questa e' una classe che contiene le caratteristiche della
//nostra finestra
function WinCreate: HWnd;
var
hWindow: HWnd;
begin
hWindow := CreateWindow(AppName, 'Questo programma calcola il triplo di un numero dato',
ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,
cw_UseDefault, cw_UseDefault, 0, 0, system.MainInstance, nil);
if hWindow <> 0 then begin
ShowWindow(hWindow, CmdShow);
ShowWindow(hWindow, SW_SHOW);
UpdateWindow(hWindow);
end;
Result := hWindow;
end;
var
AMessage: Msg;
hWindow: HWnd;
begin
if not WinRegister then begin
MessageBox(0, 'Register failed', nil, mb_Ok);
Exit;
end;
hWindow := WinCreate;
bottone:=CreateWindow ('Button', 'Calcola',
WS_VISIBLE or WS_CHILD or BS_PUSHLIKE ,
10, 80, 50, 30, hWindow, 0, hInstance, nil);
edit1:=CreateWindow ('Edit', '',
WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or ES_NUMBER ,
10, 50, 55, 16, hWindow, 0, hInstance, nil);
edit2:=CreateWindow ('Edit', '',
WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or ES_NUMBER ,
80, 50, 55, 16, hWindow, 0, hInstance, nil);
if longint(hWindow) = 0 then begin
MessageBox(0, 'WinCreate failed', nil, mb_Ok);
Exit;
end;
while GetMessage(@AMessage, 0, 0, 0) do begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
Halt(AMessage.wParam);
end.