AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Message

Ein Thema von nailor · begonnen am 6. Mai 2003 · letzter Beitrag vom 7. Mai 2003
 
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#1

Problem mit Message

  Alt 6. Mai 2003, 18:06
Ich habe jetzt auch ml mit nonVCL angefangen. Im großen und ganzen ist das nachfolgende Programm das aus dem Tutorial von Assarbard, da waren ein paar Fehler drin, die ich aber (bis auf einen) alle korrigieren konnte. Und um den gehts.

Delphi-Quellcode:
program nonvcl;

uses windows, messages;

const
  ClassName = 'nonvcl';

var
  WindowLeft: integer = 100;
  WindowTop: integer = 100;
  WindowWidth: integer = 300;
  WindowHeight: integer = 100;

function WNDProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM;
                  lParam: LPARAM): LRESULT; stdcall;
var
  IDOK: DWORD;
begin
  Result := 0;
  case uMsg OF
    WM_CREATE:
        IDOK := CreateWindow('BUTTON', 'caption of a button',
        WS_VISIBLE OR WS_CHILD OR WS_BORDER, 100, 100, 200, 24,
        hwnd, 0, hInstance, nil);
    WM_DESTROY:
        PostQuitMessage(0);
    WM_COMMAND:
      if hiword(wparam) = BN_CLICKED then
      //########################################################################
        if loword(wparam) = IDOK then //HIER HIER HIER
      //########################################################################
          MessageBox(hwnd, 'button pressed', 'Info', 0);
  else
    Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  end;
end;

var
  wc: TWndClassEx = (
        cbSize: SizeOf(TWndClassEx);
        style: CS_OWNDC OR CS_HREDRAW OR CS_VREDRAW;
        cbClsExtra: 0;
        cbWndExtra: 0;
        hbrBackground: COLOR_WINDOW;
        lpszMenuName: NIL;
        lpszClassName: ClassName;
        hIconSm: 0);
  msg: TMSG;
  rect: trect;
  deskh, deskw: integer;
  ncm: tagNONCLIENTMETRICS;
begin
  wc.hInstance := HInstance;
  wc.hIcon := LoadIcon(HInstance, MAKEINTRESOURCE(1));
  wc.hCursor := LoadCursor(0, IDC_ARROW);
  wc.lpfnWndProc := @WndProc;
  systemparametersinfo(SPI_GETWORKAREA, 0, @rect, 0);
  deskw := rect.Right - rect.Left;
  deskh := rect.Bottom - rect.Top;
  ncm.cbSize := sizeof(ncm);
  systemparametersinfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, @ncm, 0);
  windowwidth := windowleft + windowwidth;
  windowheight := windowtop + windowheight + ncm.iMenuHeight +
                    ncm.iCaptionHeight;
  Windowleft := (deskw DIV 2) - (windowwidth DIV 2);
  Windowtop := (deskh DIV 2) - (windowheight DIV 2);
  RegisterClassEx(wc);
  CreateWindowEx(WS_EX_WINDOWEDGE
                  OR WS_EX_CONTROLPARENT
                  OR WS_EX_APPWINDOW,
                  ClassName,
                  'caption of a form',
                  WS_OVERLAPPED
                  OR WS_CAPTION
                  OR WS_SYSMENU
                  OR WS_MINIMIZEBOX
                  OR WS_VISIBLE,
                  windowleft,
                  windowtop,
                  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 := GetLastError;
end.
Wenn ich die markierte Zeile auskommentiere gehts, an sonsten ist im loword immer 0, egal was für ein Handle der Button hat. Hoffe, ihr könnt mir helfen.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
 


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 06:12 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