![]() |
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. |
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? |
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? |
Re: Dialog wird nicht angezeigt
Delphi-Quellcode:
Ich habe es nun so modifiziert, leider gibt nun "GetLastError" einen Fehler 1813 raus.
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. 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.... |
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.
|
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:
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 |
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?
|
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 |
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 ![]() nonVCL Tutorials: ![]() |
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. |
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