Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Eingaben in einer CView -> INPUT_RECORD

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.03.2004, 13:59 Uhr
proga



Hallo,

ich muss alle Tastatur- sowie alle Mauseingaben abfangen.
Jede Eingabe (Taste oder Mausklick) muss in die obengenannte
Struktur überführt werden.

Aber wie bekomme ich die benötigten Informationen aus den mir
zur Verfügung stehenden Parametern raus ?


C++:
OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
OnLButtonDown(UINT nFlags, CPoint point);
OnMButtonDown(UINT nFlags, CPoint point);
OnRButtonDown(UINT nFlags, CPoint point);


Bisher habe ich folgendes:


C++:
void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    PINPUT_RECORD pInputRec = new INPUT_RECORD;

    pInputRec->EventType = KEY_EVENT;
    pInputRec->Event.KeyEvent.bKeyDown             = TRUE;
    pInputRec->Event.KeyEvent.wRepeatCount         = nRepCnt;
    pInputRec->Event.KeyEvent.wVirtualKeyCode      = nChar;
    pInputRec->Event.KeyEvent.wVirtualScanCode     = 0;       // ????
    pInputRec->Event.KeyEvent.uChar.AsciiChar      = nChar;
    pInputRec->Event.KeyEvent.dwControlKeyState    = 0;       // ????

    // Zeiger auf die Struktur in einer Liste speichern, darum hier nicht löschen,
    // wird nach dem Auslesen aus der Liste gelöscht

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


Ist das so richtig ?
Aber was ist mit wVirtualScanCode und dwControlKeyState ???
Kann mir bitte jemand helfen ?

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.03.2004, 14:03 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also mit OnKeyDown hab ich das bei mir nie so zum laufen bekommen wie ich wollte deshalb hab ich das bisher imemr mit pretranslatemessage gemacht....
Ich lass mich gerne vom gegenteil überzeugen...
an sonsten findest du ein beispiel dazu wie man die dazugehörige taste abfängt hier
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 25.03.2004 um 14:03 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.03.2004, 14:27 Uhr
~proga
Gast


Danke für die Antwort, Windalf.

Ich muss alle Eingaben abfangen, und das würde bedeuten, dass ich bei deinem Ansatz jede Eingabe manuell prüfen muss. Aber die OnKeyDown() liefert mir die Daten doch schon ?

Problem ist, die Struktur INPUT_RECORD richtig zu füllen

Ich brauche das in einer Fernsteuerungssoftware, und die Gegenseite erwartet
alle Eingaben halt in diesem Format.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.03.2004, 14:30 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja ums manuelle prüfen welche taste genau gedrückt wurde, darum kommst du ja sowieso nicht drumrum...

wenn du nur checken willst ob eine taste gedrückt wurde sollte es


C++:
BOOL MyDlg::PreTranslateMessage(MSG* pMsg){
    if(pMsg->message == WM_KEYDOWN)AfxMessageBox("eine Taste wurde gedrückt");
    return CDialog::PreTranslateMessage(pMsg);
}


tun
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.03.2004, 14:47 Uhr
~proga
Gast


warte mal, ich entweder du mich nicht verstehst, oder ich dich nicht )

also, ich versuche es nochmal, vielleicht habe ich das ja oben schlecht beschrieben:

1. ich muss nicht prüfen, welche Taste gedrückt wurde
2. ich muss auch nicht checken, ob eine Taste gedrückt wurde (da ich das ja sowieso mitbekomme, von OnKeyDown()

3. ich weiss lediglich nicht, wie ich aus diesen Parametern


Code:
nChar

Specifies the virtual-key code of the given key.

nRepCnt

Repeat count (the number of times the keystroke is repeated as a result of the user holding down the key).

nFlags

Specifies the scan code, key-transition code, previous key state, and context code, as shown in the following list:


diese Daten bekomme:


C++:
bKeyDown
Specifies TRUE if the key is being pressed, FALSE if the key is being released.
wRepeatCount
Specifies a count indicating that a key is being held down. For example, when a key is held down, you might get five events with this member equal to 1, one event with this member equal to 5, or multiple events with this member greater than or equal to 1.
wVirtualKeyCode
Specifies the virtual-key code that identifies the given key in a device-independent manner.
wVirtualScanCode
Specifies the virtual scan code of the given key that represents the device-dependent value generated by the keyboard hardware.
uChar
Specifies the translated Unicode or ASCII character, depending on whether the wide-character (Unicode) or ANSI version of the ReadConsoleInput function was used.
dwControlKeyState
Indicates the state of the control keys. This member can be one or more of the following values.


das ist echt wichtig, und ich komme einfach nicht weiter :
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.03.2004, 14:49 Uhr
~proga
Gast


ops, was hab ich denn dahin geschrieben )
ich meinte dass wir aneinander vorbeireden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.03.2004, 15:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

warte mal, ich entweder du mich nicht verstehst, oder ich dich nicht


so ich dich richtig verstanden habe willst du also nur nachprüfen ob eine taste gedrückt wurde und nicht welche...

so da ich mit onkeydown nie richtig was hinbekommen habe (liegt wohl daran das ichs damit auch nicht weiter versucht habe weils mit pretranslatemessage immer gleich so gefunzt hat wie ich wollte) kann ich dir zu deinem "struct des grauens" was du das verwendest auch ncihts sagen bzw. weiterhelfen...

was ich nur meinte ist wenn du halt nur checken willst ob eine taste gedrückt wird und du es mit onkeydown auch nciht richtig hinbekommst würd ich pretranslatemessage nehmen und auf onkeydown verzichten...

Ich wollte nicht mehr und nicht weniger sagen und dich auch nicht verwirren und dir auch keine falschen hoffnungen machen das ich dir mit der onkeydown methode weiterhelfen könnte...

Gruss Windalf
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 25.03.2004 um 15:05 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.03.2004, 16:05 Uhr
~proga
Gast


trotzdem danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: