kurze frage (enter abfangen)
-
Die Dialog Prozedur hat den Rückgabetyp INT_PTR. Und benutze TRUE und FALSE statt true und false.
-
WTF!! schrieb:
TranslateMessage((MSG*)&uMsg);
Meld dich mal bei The Daily WTF.

TranslateMessage Function -> "WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message."
"Windows 2000/XP: Applications must pass" wParam to TranslateMessage without altering it at all."
hmmmm ok, wParam. aber sonst gehts mir eigentlich schon noch ganz gut...gib dem go-button die IDOK statt 1001.
und der "go"-button funktioniert ja, nur eben enter nicht.
Es wird wahrscheinlich nicht gehen, weil du weitere Komponenten auf deiner Dialogbox hast. Die WM_KEYDOWN Nachricht wird dann an eine dieser geschickt.
klingt einleuchtend. aufn Keyboard Hook hab ich jetzt eigentlich keine lust, aber ne neue Callback Funktion werd ich ma testen...
und was soll ich mit IsDialogMessage() ?
TRUE und FALSE
halt ich für ne unart...aber ma gucken
lw
-
Lawilog schrieb:
Es wird wahrscheinlich nicht gehen, weil du weitere Komponenten auf deiner Dialogbox hast. Die WM_KEYDOWN Nachricht wird dann an eine dieser geschickt.
klingt einleuchtend. aufn Keyboard Hook hab ich jetzt eigentlich keine lust, aber ne neue Callback Funktion werd ich ma testen...
nen hook ist total überzogen
Lawilog schrieb:
und was soll ich mit IsDialogMessage() ?
na lesen
msdn schrieb:
IsDialogMessage sends WM_GETDLGCODE messages to the dialog box procedure to determine which keys should be processed.
und dann wirst du hierrauf stossen
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxmessages/wm_getdlgcode.asp
und forensuche
-
Lawilog schrieb:
WTF!! schrieb:
TranslateMessage((MSG*)&uMsg);
Meld dich mal bei The Daily WTF.

TranslateMessage Function -> "WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message."
"Windows 2000/XP: Applications must pass" wParam to TranslateMessage without altering it at all."
hmmmm ok, wParam. aber sonst gehts mir eigentlich schon noch ganz gut...Du hast ja wirklich überhaupt keine Ahnung. TranslateMessage kommt in die Message-Loop und sonst nirgendwo anders hin.
-
IsDialogMessage kannst du nur bei nicht-modalen Dialogen nutzen. In modalen Dialogen wird die schon für dich aufgerufen.
-
willst du das Enter den go-button auslöst? dann war meine antwort schon richtig.
-
enter. schrieb:
willst du das Enter den go-button auslöst? dann war meine antwort schon richtig.
nich direkt, das drücken von enter im edit-feld soll die gleiche funktion aufrufen wie das drücken des "GO" buttons...
lw
PS: immer diese besserwisser hier...is ja schlimm
-
jo, dann nimm IDOK für den button und es sollte automatisch funktionieren
-
ich höre in zukunft immer gleich auf das erste posting...

mit IDOK anstelle von 1001 gehts (zu einfach um wahr zu sein...)
mit callback müsstes aber auch geh
LRESULT CALLBACK EditWndProc(...){...return DefWindowProc(...);}
case WM_INITDIALOG: {...SetWindowLongPtr(GetDlgItem(hDialogWindow, 5001), GWLP_WNDPROC, (LONG_PTR)EditWndProc);...}naja. so gehts auch

danke
lw
-
Ich glaub du hättest dem "go"-Button auch den Style BS_DEFPUSHBUTTON geben können, der wird nämlich immer "gedrückt", wenn man Enter in nem Dialog drückt, bin mir da aber nicht 100% sicher, irgendsowas gab es aber.
Hier stehts auch in der MSDN:
[b]ES_WANTRETURN[/b] Specifies that a carriage return be inserted when the user presses the ENTER key while entering text into a multiline edit control in a dialog box. If you do not specify this style, [u]pressing the ENTER key has the same effect as pressing the dialog box's default push button[/u]. This style has no effect on a single-line edit control.
-

du kannst es auch bei 1001 lassen, müsstest dann aber einmal die nachricht DM_SETDEFID benutzen.