![]() |
Button anklicken bei WM_CREATE
Ich habe ein Programm, das rein mit API geschrieben ist.
Diesem Programm kann ich beim Start Parameter übergeben. Hat nun einer dieser einen bestimmten Wert, so möchte ich, dass ein bestimmter Button angeklickt wird. Also im Grunde das OnClick-Ereignis, wenn ich mit VCL programmiert hätte. Ich benutze folgenden Code beim behandeln der WM_CREATE-Message:
Delphi-Quellcode:
Doch leider kommt diese Nachricht nie beim Hauptfenster an.if (UpperCase(ParamStr(i))='START') then begin x := (BN_CLICKED * (High(Word)+1))+IDC_BSTART; SendMessage(hwndHauptfenster, WM_COMMAND, x, 0) end; Ich habe es auch schon bei WM_ACTIVATE versucht... |
Re: Button anklicken bei WM_CREATE
Zitat:
![]() |
Re: Button anklicken bei WM_CREATE
hmm
Interessant. Man lernt nie aus... Aber mein Problem löst es trotzdem nicht :( |
Re: Button anklicken bei WM_CREATE
Bei mir schon. Ich habe mal eben aus den allseits bekannten Win32-API-Tutorials das normale Button-Sample entpackt und die WM_CREATE-Anweisung am Schluss um
Delphi-Quellcode:
ergänzt. Da begrüßte mich beim Start des Programms die "Schick, oder?"-Box. :stupid:
SendMessage(hWnd, WM_COMMAND, MAKEWPARAM(IDC_BMPBUTTON, BN_CLICKED), 0);
|
Re: Button anklicken bei WM_CREATE
Ansonsten böte sich u.U. auch noch
![]()
Delphi-Quellcode:
SendMessage(hWnd, BM_CLICK, 0, 0);
|
Re: Button anklicken bei WM_CREATE
So ich habe herausgefunden, warum es nicht ging:
Ich habe ein Array, in dem ich alle Handles aller Fenster speichere, die ich erstelle. Das Hauptfenster erstelle ich so:
Delphi-Quellcode:
Und in der WM_CREATE-Message-Behandlung verwende ich handlearray[0] als Handle des Ziel-Fensters für den simulierten Button-Klick (habe den Code, den ich gepostet hatte leicht abgewandelt, da ich dachte, es sei nicht von Bedeutung).
handlearray[0] := CreateWindowEx()
Da aber handlearray[0] erst dann einen Wert bekommt NACHDEM das Hauptfenster erstellt wurde, also zum Zeitpunkt WM_CREATE irgendeinen Wert hat, wird die Nachricht irgendwohin gesendet, nur nicht an mein eigenes Fenster. Ich habe inzwischen als Handle den Wert genommen, der bei meiner Fenster-Prozedur als Parameter übergeben wird. Und schon funktioniert es so, wie ich es mir wünsche :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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