AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fenster wird nicht angezeigt [ WinHorrorApi ]
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster wird nicht angezeigt [ WinHorrorApi ]

Ein Thema von Desmulator · begonnen am 28. Mär 2008 · letzter Beitrag vom 28. Mär 2008
Antwort Antwort
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#1

Fenster wird nicht angezeigt [ WinHorrorApi ]

  Alt 28. Mär 2008, 16:26
Hallo

ich habe mich mal an die WinApi gewagt...
also das problem ist relativ simpel, ich habe alles wie in einem Tutorial nachgebaut, das Tut ist allerdings für C++.
Naja das Fenster wird einfach nicht angezeigt, allerdings entsteht ein taskbar eintrag...

hier der Code :
Delphi-Quellcode:
program FileShooter;

uses
  {FileFunctions,
  SocketFunctions,
  Exceptions,
  MySQLConnection,
  WindowFunctions,
  ComponentFunctions,}

  Windows,Messages, SysUtils;

const
  szAppName : String = 'TestApp';

var
  WndClass : TWndClass;
  Wnd : HWnd;
  Message : TMsg;

function WinProc(Handle : Hwnd; Message : UInt; WParam : Longint; LParam : Longint) : LongInt;
begin
  { Bla }
  //WriteLn(Message);

end;

begin
  { WndClass füttern }
  WndClass.style := CS_DBLCLKS;
  WndClass.lpfnWndProc := @WinProc;
  WndClass.cbClsExtra := 0;
  WndClass.cbWndExtra := 0;
  { progressInstanc }
  WndClass.hInstance := System.MainInstance;
  WndClass.hIcon := LoadIcon(0,IDI_APPLICATION);
  WndClass.hCursor := LoadCursor(0,IDC_ARROW);
  WndClass.hbrBackground := HBrush(COLOR_WINDOW);
  { Klassgeschisse }
  WndClass.lpszMenuName := nil;
  WndClass.lpszClassName := PChar(szAppName);

  { Klasse registern }
  RegisterClass(WndClass);

  { Fenster erzeugen }
  Wnd := CreateWindow(PChar(szAppName),'Test',WS_OVERLAPPEDWINDOW,
                      CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT
                      ,HWND_DESKTOP,0,System.MainInstance,0);
  { Anzeigen }
  ShowWindow(Wnd,System.CmdShow);
  { Updaten }
  UpdateWindow(Wnd);


  WriteLn(GetLastError);

  { Nachrichten abholen }
  while GetMessage(Message,0,0,0) do begin
    TranslateMessage(Message);
    DispatchMessage(Message);
  end;
end.
Lars
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#2

Re: Fenster wird nicht angezeigt [ WinHorrorApi ]

  Alt 28. Mär 2008, 16:31
Delphi-Quellcode:
function wndproc(hwnd: LongWord; uMsg: LongWord; wParam: LongInt; lParam: LongInt): LongInt; stdcall;
begin
  case uMsg of
    WM_DESTROY:
      PostQuitMessage(0);

  else result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  end;
end;
DefWindowProc() laesst windows fuer die nicht von dir abgearbeitet nachricht agieren. events wie WM_PAINT werden sonst nicht ausgefuehrt und somit kann windows dein fenster nicht zeichnen.
PostQuitMessage(0) beendet deine nachrichtenschleife, da dein programm sonst ohne fenster weiter laufen wuerde


//edit
vorsicht, wndproc MUSS eine andere aufrufkonvektion erhalten (stdcall)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz