Tastendruck mit MFC auslesen

sheel

I love Asm
Hi

das geht eigentlich ziemlich automatisch.
Keydown wird dann eben einmal für eine Taste und einmal für die andere Taste aufgerufen.
Dann beim loslassen eben zweimal Keyup.

Mach zB. einfach irgendwo zentral vier Variablen für jeden Pfeil, in denen du 0 für nicht gedrückt und 1 für gedrückt speicherst.
In Keydown und Keyup änderst du dann ggf. den Wert.
So kannst du dann jederzeit den Status aller 4 Tasten ermitteln.

Zum PS: Welche Sprachen hattest du denn bisher?
Das Keydown-Keyup-Prinzip da ist nicht gerade einzigartig in MFC, das gibts oft.

Gruß
 

xKorbix

Grünschnabel
Ich habe es nun einfach so gemachct.
C++:
BOOL CMFC_CameraDlg::PreTranslateMessage(MSG* pMsg)
{
	int b=0;
UpdateData(true);
	switch(pMsg->wParam){
		case VK_LEFT:
			if(Global::value==1)
			{
				m_SPEED_pfeil.SetString("Vorwärts - links");
			}
			if(Global::value==0)
			{
				m_SPEED_pfeil.SetString("Rückwärts - links");
			}
			
			break;
		case VK_UP:
			Global::value=1;
			b=1;
			break;
		case VK_RIGHT:
			if(Global::value==1)
			{
				m_SPEED_pfeil.SetString("Vorwärts - rechts");
			}
			if(Global::value==0)
			{
				m_SPEED_pfeil.SetString("Rückwärts - rechts");
			}
			break;
		case VK_DOWN:	
			Global::value=0;
			b=1;
			break;
      }
	if(b==0)
	{
		Global::value=2;
	}
UpdateData(false);
	return CDialog::PreTranslateMessage(pMsg);
}

müsste normalerweise gehen oder?

zu den sprachen die ich hab: Javascript, Html, C++, SPS und Visaul Basic
 
Zuletzt bearbeitet:

sheel

I love Asm
Schreib doch den Code bitte in die Codetags.
[code=cpp]...[/code]
Dann bleiben auch die Einrückungen. So kann man das kaum lesen.
 

xKorbix

Grünschnabel
mir fällt gerade auf mit diesem keydown und keyup wär das verdammt einfach... blos ich kapiere es nicht so wirklich.. ich wär dir seehr dankbar wenn du mir das kurz erläutern würdest wie ich das anstellen kann das die onkeydown funktion für pfeil nach oben aufgerufen wird wenn ich pfeil nach oben drücke.
 

sheel

I love Asm
Du kannst das auch im Pretranslate nachbauen.
Die Messages heißen WM_KEYDOWN und WM_KEYUP.

Also, vorausgesetzt, du hast irgendwo Variablen namens pfeil_rauf und pfeil_runter:
C++:
BOOL CMFC_CameraDlg::PreTranslateMessage(MSG* pMsg)
{
    UpdateData(true);
    switch(pMsg->message)
    {

        case WM_KEYDOWN:
        switch(pMsg->wParam)
        {
            case VK_UP:
                pfeil_rauf = 1; //zum merken, für spätere Abfragen
                //ggf. noch was tun
            break;
            case VK_DOWN:   
                pfeil_runter = 1;
                //...
            break;
        }
        break;

        case WM_KEYUP:
        switch(pMsg->wParam)
        {
            case VK_UP:
                pfeil_rauf = 0;
                //...
            break;
            case VK_DOWN:   
                pfeil_runter = 0;
                //...
            break;
        }
        break;

    }
    UpdateData(false);
    return CDialog::PreTranslateMessage(pMsg);
}
Für rechts und links erweitern schaffst du bestimmt selber.

Gruß
 

xKorbix

Grünschnabel
oke habs hinbekommen danke euch
Hatte bis her noch kein Forum mit so hilfsbereiten und freundlichen Leuten

Gruß

Korbi
 
Zuletzt bearbeitet:

xKorbix

Grünschnabel
oke habs hinbekommen danke euch
Hatte bis her noch kein Forum mit so hilfsbereiten und freundlichen Leuten

Gruß

Korbi
EDIT:
sry für doppelpost