Smartphone: Tasten auswerten und zuweisen

noize83

Grünschnabel
Hallo,
ich hoffe ,dass ich hier richtig bin.

Ich schreibe gerade ein Programm für PocketPC's und Smartphones.
Nun habe ich folgendes Problem:

wenn ich mich einmal in einer ListBox befinde, kann ich dort mit HOCH, RUNTER, LINKS und RECHTS zwischen den Einträgen wechseln. Leider hat das zurfolge, dass ich ohne Toutchscreen nicht mehr aus der Listbox herauskomme. Habe schon einiges versucht.
Mit den WM Nachrichten bin ich bisher nicht erfolgreich gewesen. Schön wäre es, mit den Tasten LINKS und RECHTS die Auswahl zu wechseln und HOCH und RUNTER als TAB zu verwenden

Bitte helft mir.


Gibt es irgendwo eine Übersicht, welche Taste welche Nachricht auslöst
Mein nächstes Problem ist es, die BACK Taste für das Löschen von Zeichen in einer EditBox zu nutzen (was leider nicht standartmäßig so funktioniert).

Ich Danke euch

Noize
 
Kann mir denn keiner helfen?
Es kann doch eigentlich nicht schwer sein, dass man wenn man HOCH drückt, PrevCtlTab ausgeführt wird. Hab auch schon viel gegoogelt. Aber irgendwie klappt das nicht so richtig.

es muss doch irgendwie mit der Funktin WndProc oder AfxWndProc zu lösen sein, oder


Hat jemand vielleicht ein gutes MFC-Tutorial, in dem die Nachrichtenbehandlung schön erklärt wird? Hab hier bei den Tutorials nicht das richtige gefunden.
 
Hi,
So läßt sich auch nicht einfach antworten. Wo fängst du denn die Nachrichten ab? Und was machst du dann damit? Zeig mal ein bißchen Code.

Mfg

langer
 
In der Message Map mach ich einfach folgensdes:

ON_WM_KEYDOWN()

Unten kommte dann:

void CGNSS_CEDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{

CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

Leider springt er niemals in diese Funktion, egal, welche Taste ich drücke
mfg und danke
manuel
 
Nochmal eine Dumme Frage

müsste ich icht mit einer Funktion

int callback DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)

alle Nachrichten Abfangen können
 
Hi,
ich denke, es liegt daran, dass deine Listbox in dem Moment den Focus hat und damit alle Meldungen als erste erhält. Und diese dann dort abgearbeitet werden. Wenn du bestimmte Aktionen abfangen willst, bietet sich die Ableitung einer eigenen Klasse mit Überschreiben der Handler oder der Einsatz von PreTranslateMessage an.

Mfg

langer
 
reicht es dann, wenn ich für die Control-Variable eine neue Klasse anlege?
Also etwa so:


class myListBox : public CListBox
{
}

welche funktion muss ich dann überschreiben um die nachrichten abzufangen?

Oder kann ich hier dann einfan OnKeyDown definieren
 
Genau!

Du fängst die Nachricht WM-KEYDOWN ab, indem du die Nachricht über den Handler OnKeyDown abfängst. Dann kannst du die Tastencode auswerten und danach die Reaktion implementieren.

Mfg

langer
 
Zurück