Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 03.08.2007, 20:35 Titel: |
|
|
RebornX hat Folgendes geschrieben: | WIE AUCH IMMER!! XD
Können wir jetzt wieder zu meinem Problem kommen ??  |
der Meinung bin ich auch! Also das Thema mit den strings ist jetzt klar und abgeschlossen (hoffe ich)
Zitat: | hmm, mit WM_SYSKEYDOWN klappts auch nicht.
Und naja die Nachricht wird gesendet sobald der Focus nicht mehr auf das Editfenster zeigt und ich auf Eingabe klicke... |
Also welche Nachricht meinst du mit "wird gesendet"? Und was meinst du mit "Eingabe"? Den Button, das Editfeld oder was anderes
Gruß DXer |
|
Nach oben |
|
 |
RebornX JLI'ler

Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 03.08.2007, 20:42 Titel: |
|
|
Also:
Sobald ich auf Eingabe/Return klicke sendet die Callback Funktion WM_KEYDOWN, ABER nur wenn der Focus nicht auf das Editfeld zeigt.
Das gleiche gilt auch bei WM_SYSKEYDOWN...
Hier nochmal der Code:
http://nopaste.de/p/aCxEb2NMi _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2007, 21:04 Titel: |
|
|
Jo, du musst einen hook ienbauen. Ich hatte mal bei nem Chat das selbe Problem, das ich in der Zeile Enter drücken wollte und das gleiche geschehen sollte, wie wenn ich auf den ok Button klicke.
Die Technik ist recht simpel, du musst eine Callback für das eingabefeld schreiben und nur die Keydown nachricht abfangen und alle anderen an die normale Callback des Eingabefeldes weitergeben.
CPP: | LRESULT CALLBACK EditWndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam);
LONG_PTR OldEditWndProc;
hEingabe=CreateWindow("edit", NULL, WS_CHILD | WS_BORDER | WS_VISIBLE, 0, 200, 600-120, 24, hWnd, (HMENU)2, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
OldEditWndProc=SetWindowLongPtr(hEingabe, GWLP_WNDPROC, (LONG_PTR)EditWndProc);
//und dann noch:
LRESULT CALLBACK EditWndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_KEYDOWN:
if(VK_RETURN==wParam)
{
Senden();
}
}
return CallWindowProc((WNDPROC)OldEditWndProc, hWnd, Message, wParam, lParam);;
}
|
_________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
RebornX JLI'ler

Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 03.08.2007, 21:13 Titel: |
|
|
Ja da habe ich mir auch als erstes gedacht, aber es müsste doch auch eigentlich eine einfacherere Methode dafür geben, denn solche Optionen benutzten doch die meisten Programme?
Besonders bei so kleinen Eingabefeldern  _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
 |
RebornX JLI'ler

Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 03.08.2007, 21:35 Titel: |
|
|
Hmm habe es jetzt mal mit noch einer Callbackfunktion probiert, aber irgendwas mache ich falsch, denn jetzt wird nicht einmal WM_KEYDOWN aufgerufen wenn der focus nicht auf das editfeld zeigt.
Hier der Code:
http://nopaste.de/p/a26arrbQS _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2007, 21:48 Titel: |
|
|
Natürlich wird das aufgerufen, du fragst es nur nicht ab. Wenn der Focus im Eingabefeld leigt, bekommt dein Hauptfenster keine Nachrichten mehr. Die bekommt immer nur das aktuelle Fenster, in dem Fall dann also dein Eingabefeld. Da müsste die dann aber auch ankommen, jedenfalls siehts auf den ersten Blick vom Code her so aus.
Und ne einfachere Möglichkeit gibts glaube ich nicht. Aber die hier ist ja auch nicht so wahnsinnig schwer. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
RebornX JLI'ler

Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 04.08.2007, 09:34 Titel: |
|
|
Hm? Aber ich habe doch die zweite Callback durch
CPP: | return CallWindowProc((WNDPROC)OldEditWndProc, hWnd, Message, wParam, lParam); |
aufgerufen?? _________________ Besucht meine Seite:
www.cpparchiv.dl.am |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.08.2007, 19:53 Titel: |
|
|
Jona meint, dass du in der Callback des Fensters die WM_KEYDOWN gar nicht mehr abfragst. Du leitest mit dieser Zeile nur die Nachrichten des Editfensters an die alte (Standard-)Callback des Editfensters weiter. Die Callback des Fensters ist die, die reagiert wenn du im Fenster etwas machst (z.B. Enter drückst); die für das Editfenster reagiert nur in Bereich des Eidts und nicht im Fenster...
Gruß DXer |
|
Nach oben |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 15.08.2007, 19:00 Titel: Hey |
|
|
Gibs es eindlich nur tuts über WinApi oder auch Bücher darüber? Suche nämlich ein Buch für die WinApi am besten wie man WinApi in C++ einfügen kann. |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 15.08.2007, 19:05 Titel: |
|
|
also es gibt immer wieder so ein bestimmtes buch zur winAPI, das mir bei solchen fragen einfällt. Z.B. handelt dieser komplette Thread von diesem Buch. ( 1. Post lesen)
les dir auch die anderen Threads in diesem Subforum zu dem thema durch, dann findest du ganz schnell was du suchst. Du wirst aber auch sehen, dass es nicht sowas für C++ gibt, aber das lässt sich mit einigermaßen guten c++ kenntnissen mehr oder weniger gut portieren.
Gruß DXer |
|
Nach oben |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 15.08.2007, 19:11 Titel: |
|
|
Meinste das Buch von Petzhold? |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 15.08.2007, 19:14 Titel: |
|
|
ja klar welches sonst?? |
|
Nach oben |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 15.08.2007, 19:16 Titel: |
|
|
Naja dachte och das es nen ander Autor noch sowas geschrieben hat als Petzhold . |
|
Nach oben |
|
 |
|