Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dialog wird nicht angezeigt (https://www.delphipraxis.net/65666-dialog-wird-nicht-angezeigt.html)

originalhanno 19. Mär 2006 19:17


Dialog wird nicht angezeigt
 
Hallo zusammen,
kann mir bitte jemand erklären, warum der Dialog nicht angezeigt wird?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function DlgFunc(hwnd: HWND; umsg: UINT; wparam: WPARAM; lparam: LPARAM): BOOL; stdcall;
begin
  Result := True;
  case umsg of
  WM_INITDIALOG:
      begin
      SetDlgItemText(hwnd, 1001, 'Here the text will be received')
      end;
    WM_CLOSE:
      begin
      end;
    WM_COMMAND:

  else

  end;
end;

begin

  DialogBoxParam(hInstance, MakeIntResource(1001), 0, @dlgfunc, 0);

end.

C.Schoch 19. Mär 2006 20:25

Re: Dialog wird nicht angezeigt
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function DlgFunc(hwnd: HWND; umsg: UINT; wparam: WPARAM; lparam: LPARAM): BOOL; stdcall;
begin
  Result := True;
  case umsg of
  WM_INITDIALOG:
      begin
      SetDlgItemText(hwnd, 1001, 'Here the text will be received')
      end;
    WM_CLOSE:
      begin
      end;
    WM_COMMAND:

  else

  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   DialogBoxParam(hInstance, MakeIntResource(1001), 0, @dlgfunc, 0);
end;

end.

IMHO müsste es so aussehen damit überhaupt etwas aufgerufen wird, aber wo ruftst du die Funktion DlgFunc auf?
wird die in DialogBoxParam aufgerufen?

originalhanno 19. Mär 2006 21:05

Re: Dialog wird nicht angezeigt
 
Ich weiss nicht, ob ich DlgFunc schon aufrufe, indem ich den Pointer darauf in DialogParam verwende?

Kann mir das jemand erklären?

originalhanno 19. Mär 2006 21:40

Re: Dialog wird nicht angezeigt
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function DlgFunc(hwnd: HWND; umsg: UINT; wparam: WPARAM; lparam: LPARAM): BOOL; stdcall;
begin
  Result := True;
  case umsg of
  WM_INITDIALOG:
      begin
      SetDlgItemText(hwnd, 1001, 'Here the text will be received')
      end;
    WM_CLOSE:
      begin
      end;
    WM_COMMAND:

  else

  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
   DlgWnd:Hwnd;
   Msg: TMSG;
   i:integer;
begin
  DlgWnd:=CreateDialog(hInstance, MakeIntResource(1), 0, @dlgfunc);
  if IsWindow(DlgWnd) then
  begin
       ShowWindow(DlgWnd,SW_SHOWNORMAL);
       UpdateWindow(DlgWnd);
       while GetMessage(Msg,0,0,0) do
             if not IsDialogMessage(DlgWnd, Msg) then
             begin
                  TranslateMessage(Msg);
                  Dispatch(Msg);
             end;
       end
  else
  begin
       i:=integer(GetLastError);
       showmessage(inttostr(i));
  end;
  end;
end.
Ich habe es nun so modifiziert, leider gibt nun "GetLastError" einen Fehler 1813 raus.
Das bedeutet :"The specified resource type cannot be found in the image file"

Wie funktioniert der Aufruf von CreateDialog, was muss ich bei MakeIntResource angeben?

Bin für Antworten sehr dankbar....

Luckie 19. Mär 2006 22:39

Re: Dialog wird nicht angezeigt
 
Stimmt die RessourcenID? Häng mal den Code und alles was dazu gehört von deiner ersten Version an, dann gucke ich mir das mal an.

originalhanno 19. Mär 2006 23:33

Re: Dialog wird nicht angezeigt
 
ich weiß nicht ob die Resourcen-Id stimmt, denn ich habe keine woher ich die bekomme / was das ist !
Ich währe sehr dankbar, wenn Du es mir erklären könntest.

Zitat:

Häng mal den Code und alles was dazu gehört von deiner ersten Version an, dann gucke ich mir das mal an.
Das ist der Code den ich geschrieben habe, um die Sache mit den Dialogen überhaupt zu verstehen, da ich doch langsam am verzweifeln bin.
Mein eigentiches Problem ist aber, das ich aus einem Maus-Hook, der sich ja in einer DLL befindet einen Dialog / Label aufrufen möchte, der mir x- und y Position anzeigen soll.
Ich weiss nicht, ob ich mittels IPC die Nachricht an das aufrufende Proramm senden soll, oder ob ich direkt aus der DLL einen Dialog starten kann.

Bitte um HILFE !!! :wall:

Auch werde ich noch Fragen zu IPC stellen müssen, da mein globaler Maus-Hook wohl so nicht geht.
Ich währe ÜBERAUS DANKBAR für ein Beispiel, dass meine Aufgabe umsetzt, so dass ich sehen kann, was ich nicht verstanden habe, da ich michh im Moment irgendwie im Kreis bewege, und auch nicht mehr weiß was ich fragen soll / was sinnvoll ist zu fragen, was nicht...


:pale:

Vielen Dank schon mal an alle Geduldigen...


LG

Michael

Luckie 19. Mär 2006 23:48

Re: Dialog wird nicht angezeigt
 
Nun ja, du wirst ja irgendwo mit einem RessourcenEditor einen Dialog erstellt haben und dort wirst du ja ein IDE vergeben haben. Aber warum mischt du VCL und nonVCL so komisch?

originalhanno 19. Mär 2006 23:55

Re: Dialog wird nicht angezeigt
 
Ich habe mit keinem Resourcen-Editor einen Dialog geschrieben...
Muss ich das?
Wie geht das??

Im Moment ist es mir noch egal, ob ich VCL und NON-VCL mische. Ich weiss zwar das das nicht sehr cool ist, jedoch möchte ich nur die Funktion von meinem Maus-Hook verstehen, und dazu muss ich sehen was / ob was passiert.
Also, ich möchte auf dem einfachsten Wege, die Werte die mein Maus Hook verarbeitet sehen können....

LG Michael

Luckie 20. Mär 2006 00:07

Re: Dialog wird nicht angezeigt
 
Äh, deswegen heißt es ja DialogRessource, weil der Dialog aus einer Ressource geladen wird.

Und einfach mal im MSD unter MSDN-Library durchsuchenDialogBoxParam gucken.

nonVCL Tutorials: http://delphitutorials.michael-puff.de

originalhanno 20. Mär 2006 00:15

Re: Dialog wird nicht angezeigt
 
aha,
ja die Funktionsdefinition hab ich gelesen, versteh aber nicht was ein template ist?

Kannst Du es mir erklären?

Hast Du vielleicht ein einfaches Beispiel, ohne zusätzliche Funktionen. Bei Assarbad gibt es auch ein Hook Tutorial, allerings sind da viele Sachen auf einmal drinnen, finde ich schwer zu verstehen.

Wie erstelle ich einen Dialog?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz