Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   ID_XXX Konstanten in welcher Unit??? (https://www.delphipraxis.net/187330-id_xxx-konstanten-welcher-unit.html)

delphifan2004 20. Nov 2015 06:22

ID_XXX Konstanten in welcher Unit???
 
Hallo,

noch immer studiere ich Luckies Windows API Tutorial. Da gibt es ein Beispiel ganz am Anfang, wo 2 Fenster erzeugt werden. Das zweite Fenster wird durch Klicken eines Buttons aktiviert.

Mein Compiler findet aber weder die Konstante ID_BUTTON noch ID_BUTTON1.

Leider ist der komplette Quellcode im Turorial nicht abgedruckt.

Deshalb frage ich:

- in welcher Unit befinden sich die ID_XXX Konstanten. Windows und Messages habe ich schon in der Uses Klausel.

- Wo wird der Button erzeugt, mit dem ich das zweite Fenster aktiviere. Da ID_BUTTON1 nicht gefunden wird, kann ich das Beispiel nicht ausführen. Kann ich denn gefahrlos einen eigenen Zahlenwert für die Konstante ID_BUTTON1 definieren, ohne Seiteneffekte, weil der von mir gewählte Zahlenwert doch schon von Windows reserviert ist?

Ich habe das Beispiel 1 im Kapitel 1.1.1 um folgende Funktionen erweitert:

Delphi-Quellcode:
//Window Prozedur für das 2. Fenster
function WndProc2(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):
  lresult; stdcall;
begin
  case uMsg of
    WM_COMMAND:
    begin
      if HiWord(WParam) = BN_Clicked then
      case LoWord(WParam) of
        IDC_BUTTON1:
         hwnd2 := CreateWindowEx(
           0, ClassName2, Window2Name,
           WS_OVERLAPPEDWINDOW or WS_VISIBLE,
           40,10,300,200, hwnd1, 0, hInstance, nil
         );
      end;
    end;

    WM_DESTROY: PostQuitMessage(0);

  else
    Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  end;
end;
Alles andere habe ich exakt aud dem Tutorial übernommen, außer die Abmaße des Fensters, weil ich mit den Konstanten CW_USEDEFAULT die Meldung erhalten habe, das der Bereich des Fensters 1 zu klein sei. Daher habe ich die Abmaße des 2. Fensters kleiner gemacht, als die des ersten Fensters.

uligerhardt 20. Nov 2015 07:39

AW: ID_XXX Konstanten in welcher Unit???
 
Das dürften projektspezifische IDs für die Controls sein. Eigentlich müssten sie irgendwo im Projektquelltext enthalten sein.

delphifan2004 20. Nov 2015 09:53

AW: ID_XXX Konstanten in welcher Unit???
 
Danke! Da brauche ich nicht weiter zu suchen.


Nein, leider ist die Quelltexterweiterung in Luckies Tutorial nur angedeutet und der Quelltext in der Winapi_Demos.zip fehlt leider für dieses Beispiel.

Aber da leg ich mal einen eigenen Zahlenwert für meine Konstante fest.

Luckie 20. Nov 2015 15:38

AW: ID_XXX Konstanten in welcher Unit???
 
Welches Demo genau. Die IDs identifizieren die Schaltflächen. Die Konstanten selbst IDC_BUTTON1 usw. sind immer im Quelltext definiert. Beispiel Button Demo:

Datei Button.dpr:
Zeile 44ff
Delphi-Quellcode:
const
  IDC_BUTTON = 3;
  IDC_BMPBUTTON = 4;
Zeile 75ff
Delphi-Quellcode:
{Button erstellen}
        hwndButton := CreateWindowEx(WS_EX_CLIENTEDGE, 'BUTTON', '&Beenden',
          WS_VISIBLE or WS_CHILD, 45, 20, 100, 25, hWnd, IDC_BUTTON, hInstance,
          nil);

        {Bitmap-Button erstellen}
        hwndBmpButton := CreateWindowEx(0, 'BUTTON', 'Button', WS_VISIBLE or
          WS_CHILD or {$IFDEF USEICON} BS_ICON {$ELSE} BS_BITMAP {$ENDIF},
          45, 60, 100, 25, hWnd, IDC_BMPBUTTON, hInstance, nil);
Bei größeren Projekten habe ich sie aber auch teilweise in Include-Dateien ausgelagert, der Übersicht halber.

Luckie 20. Nov 2015 15:52

AW: ID_XXX Konstanten in welcher Unit???
 
Habs gefunden.

Delphi-Quellcode:
{******************************************************************************}
{                                                                              }
{                                TwoWindows                                   }
{                                                                              }
{                    Copyright (c) 2001 Michael Puff                          }
{                            www.luckie-online.de                             }
{                           mpuff@luckie-online.de                            }
{                                                                              }
{******************************************************************************}
program TwoWindows;

{$R resource.res}

uses
  Windows,
  Messages;

const
  ClassName1 = 'Wnd1Class';
  ClassName2 = 'Wnd2Class';
  Window1Name = 'Window 1';
  Window2Name = 'Window 2';
  WindowWidth1 = 500;
  WindowHeight1 = 400;
  WindowWidth2 = 300;
  WindowHeight2 = 200;

  IDC_BUTTON1 = 1; // <--- !!!!!
Schock-schwere-Not. Die Dinger lassen sich mit Delphi 2006 immer noch ohne Probleme kompilieren. :shock:

EWeiss 20. Nov 2015 17:07

AW: ID_XXX Konstanten in welcher Unit???
 
Zitat:

Schock-schwere-Not. Die Dinger lassen sich mit Delphi 2006 immer noch ohne Probleme kompilieren.
Solange sich die WinApi nicht ändert warum sollen sie sich nicht unter D2006 kompilieren lassen.
Fakt ist doch das die API unabhängig von irgendwelchen Delphi Versionen sind.

Selbst mit D3 sollte das gehen.

gruss

Luckie 20. Nov 2015 17:10

AW: ID_XXX Konstanten in welcher Unit???
 
ja, das ist klar. Nur ich hatte sie mit D2006 noch nie angefasst gehabt, deswegen die verwunderte Freude. :-D

EWeiss 20. Nov 2015 17:17

AW: ID_XXX Konstanten in welcher Unit???
 
Zitat:

Zitat von Luckie (Beitrag 1322035)
ja, das ist klar. Nur ich hatte sie mit D2006 noch nie angefasst gehabt, deswegen die verwunderte Freude. :-D

Ach so na dann ;)
Davon ab sind die Tutorials Toll auch wenn ich sie nicht benötige. :thumb:

gruss

Luckie 20. Nov 2015 17:21

AW: ID_XXX Konstanten in welcher Unit???
 
Danke.

Namenloser 21. Nov 2015 11:03

AW: ID_XXX Konstanten in welcher Unit???
 
[OT]
Zitat:

Zitat von Luckie (Beitrag 1322029)
Schock-schwere-Not. Die Dinger lassen sich mit Delphi 2006 immer noch ohne Probleme kompilieren. :shock:

Delphi 2006 ist inzwischen auch schon wieder fast 10 Jahre alt.
[/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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