this slowpoke moves

Sizelable Form Template

program fenster;

uses
  Windows, Messages;

const
  ClassName = 'WndClass';
  AppName = 'Fenster-Demo';
  WindowWidth = 550;
  WindowHeight = 125;

var
  ahdc: HDC;
  buffer: array[0..99] of Char;
  buffer1: array[0..99] of Char;
  xPos, yPos: Integer;

{Fensterfunktion}
function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):
  lresult; stdcall;
var
  x, y : integer;   //Variablen für Fensterposition
begin
  Result := 0;

  case uMsg of
    WM_CREATE:
      begin
        {Fenster zentrieren}
        x := GetSystemMetrics(SM_CXSCREEN);   //Screenhöhe & -breite
        y := GetSystemMetrics(SM_CYSCREEN);
        {Fenster auf neue Positionverschieben}
        MoveWindow(hWnd, (x div 2) - (WindowWidth div 2),
          (y div 2) - (WindowHeight div 2),
          WindowWidth, WindowHeight, true);
      end;
    WM_DESTROY:
      PostQuitMessage(0);
    WM_LBUTTONDOWN:
      if(MK_SHIFT or MK_LBUTTON = wParam) then
      begin
        ahdc := GetDC(hWnd);
        xPos := LoWord(lParam);
        ypos := HiWord(lParam);
        wvsprintf(buffer, 'Fensterhandle: %d',  PChar(@hWnd));
        wvsprintf(buffer1, ', Message: %d', PChar(@uMsg));
        lstrcat(buffer, buffer1);
        wvsprintf(buffer1, ', wParam: %d', PChar(@wParam));
        lstrcat(buffer, buffer1);
        wvsprintf(buffer1, ', LoWord(lParam) x-Pos: %d', PChar(@xpos));
        lstrcat(buffer, buffer1);
        wvsprintf(buffer1, ', HiWord(lParam) y-Pos: %d', PChar(@ypos));
        lstrcat(buffer, buffer1);
        TextOut(ahdc, 20, 20, buffer, Length(buffer));
        ReleaseDC(hWnd, ahdc);
      end;
  else
    Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  end;
end;

var
  {Struktur der Fensterklasse}
  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(hInstance, MAKEINTRESOURCE(100));
  wc.hCursor    := LoadCursor(0, IDC_ARROW);
  RegisterClassEx(wc);
  CreateWindowEx(0, ClassName, AppName, WS_CAPTION or WS_VISIBLE or WS_SYSMENU
    or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SIZEBOX, CW_USEDEFAULT,
    CW_USEDEFAULT, WindowWidth, WindowHeight, 0, 0, hInstance, nil);
  while GetMessage(msg,0,0,0) do
  begin
    TranslateMessage(msg);
    DispatchMessage(msg);
  end;
  ExitCode := msg.wParam;
end.

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate