![]() |
Grundgerüst
Was ist an diesem Code falsch? Ist ein Konsolenprogramm und sollte ein Fenster erstellen, dass den gesamten Bildschirm füllt. Nur, dass das Programm beim start hängt und nichts passiert. Der Code stammt teilweise aus einem Buch
Delphi-Quellcode:
Danke
program strategie1;
uses SysUtils, windows, messages; CONST gamename='TEST 1'; mousevisible=TRUE; var parent:HWND; mess:TMSG; WndClas:TWNDCLASS; breite,hoehe:longint; function MainWndProc(hWNd:HWND;iMessage:UINT;wParam:WParam;lparam:LParam):LResult;export;stdcall; begin; result :=0; case (iMessage) of WM_DESTROY: PostQuitMessage(0); else result:=DefWindowProc(hwnd,iMessage,wparam,lparam); end; end; begin if hPrevInst = 0 then begin; WndClas.style := CS_HREDRAW or CS_VREDRAW; WndClas.lpfnWndProc := @MainWndProc; WndCLas.cbClsExtra := 0; WndClas.cbWndExtra := 0; WndClas.hInstance := hInstance; WndClas.hIcon := loadicon(0,IDI_APPLICATION); WndClas.lpszMenuName := ''; WndClas.lpszClassName := 'SpielKlasse'; if (RegisterClass(WndClas)=0) then begin; messagebox(0,'Klasse konnte nicht erstellt werden',nil,MB_OK or MB_IconSTOP or MB_TASKMODAL); halt; end; end; breite := GetSystemMetrics(SM_CXSCREEN); hoehe := GetSystemMetrics(SM_CYSCREEN); parent := CreateWindow('SpielKlasse',pchar(gamename),WS_POPUP,0,0,breite,hoehe,0,0,hInstance,nil); showcursor(mousevisible); ShowWindow(parent,SW_SHOW); repeat PeekMessage(mess,0,0,0,Pm_Remove); TranslateMessage(mess); DispatchMessage(mess); until (mess.message=WM_Quit); SHowCursor(TRUE); end. TO |
Deine Nachrichtenschleife ist etwas daneben und deine Fensterprozedur auch. Versuch es mal damit:
Delphi-Quellcode:
Deswertern kann ich dir nur meien nonVCL-Tutorials ans Herz legen, zu finden auf meiner Seite.
{******************************************************************************}
{ } { Fenster-Vorlage } { } { Copyright (c) 2002 Michael Puff } { [url]www.luckie-online.de[/url] } { [email]mpuff@luckie-online.de[/email] } { } {******************************************************************************} program Fenster_Vorlage; uses Windows, Messages; const ClassName = 'WndClass'; AppName = 'Fenster-Vorlage'; WindowWidth = 500; WindowHeight = 350; var hwndMain: DWORD; { GetLastError } function DisplayErrorMsg(hWnd: THandle): DWORD; var szBuffer: array[0..255] of Char; begin FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError, 0, szBuffer, sizeof(szBuffer), nil); MessageBox(hWnd, szBuffer, 'Fehler', MB_ICONSTOP); result := GetLastError; end; function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam): lresult; stdcall; var x, y : integer; begin Result := 0; case uMsg of WM_CREATE: begin { Fenster zentrieren } x := GetSystemMetrics(SM_CXSCREEN); y := GetSystemMetrics(SM_CYSCREEN); MoveWindow(hWnd, (x div 2) - (WindowWidth div 2), (y div 2) - (WindowHeight div 2), WindowWidth, WindowHeight, true); end; WM_DESTROY: PostQuitMessage(0); else Result := DefWindowProc(hWnd, uMsg, wParam, lParam); end; end; var wc: TWndClassEx = ( cbSize : SizeOf(TWndClassEx); Style : CS_HREDRAW or CS_VREDRAW; lpfnWndProc : @WndProc; cbClsExtra : 0; cbWndExtra : 0; hbrBackground : COLOR_APPWORKSPACE; lpszMenuName : nil; lpszClassName : ClassName; hIconSm : 0; ); msg: TMsg; begin wc.hInstance := hInstance; wc.hIcon := LoadIcon(0, IDI_APPLICATION); wc.hCursor := LoadCursor(0, IDC_ARROW); RegisterClassEx(wc); hwndMain := CreateWindowEx(0, ClassName, AppName, WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SIZEBOX, Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT), WindowWidth, WindowHeight, 0, 0, hInstance, nil); while true do begin if not GetMessage(msg, 0, 0, 0) then break; TranslateMessage(msg); DispatchMessage(msg); end; ExitCode := msg.wParam; end. |
Wenn ich das richtig verstanden habe, dann wartet getmessage bis eine Nachricht da ist und peekmessage macht weiter, ist das richtig?
Was ist den an meinem Code so falsch. Dein Code bringt mir nämlich wenig! |
Zitat:
![]() ![]() |
Welche Teile des PDSK's brauche ich den? Ich bin gerade nur am das CoreSDK runterzuladen, reicht das?, Oder brauche ich noch mehr?
|
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz