Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Cursortasten abfragen

Diskussion: Cursortasten abfragen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo Hacker, wie kann ich mit C die Cursortasten abfragen? Es soll ungefähr so aussehen: while( Cursor == NACH_OBEN ...

Antwort
Alt 28.01.05, 16:02   #1 (permalink)
 
Registriert seit: 10.02.04
icecreamman Leistung: Facit NTK
Likes: 0
Smile Cursortasten abfragen

Anzeige

Hallo Hacker, wie kann ich mit C die Cursortasten abfragen?

Es soll ungefähr so aussehen:

while( Cursor == NACH_OBEN )
printf("Momentan wird Taste soundso gedrückt");

Danke im Voraus!

icecreamman ist offline   Mit Zitat antworten
Alt 28.01.05, 16:25   #2 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

Hallo,

ich begrüsse Sie beim C/C++ Kochstudio!
Heute Kochen wir uns Tastensuppe!
Da wir keinen Plan haben wie sowas geht suchen wir uns ein Rezept, und wo findet man ein solches Rezept? Genau, bei Google!
So und hier ist es:
http://www.computerhilfen.de/hilfen-14-28854-0.html

http://www.supportnet.de/listthread/162493

Hoffe doch es hilft Dir!
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 28.01.05, 17:23   #3 (permalink)
Themenstarter
 
Registriert seit: 10.02.04
icecreamman Leistung: Facit NTK
Likes: 0
Standard

Danke für die Links!

Ich habe es ausprobiert, aber es hat nicht geholfen. Vielleicht hat es was damit zu tun, dass ich Linux benutze. Jedenfalls kriege ich von getch(), bzw getchar() für jede der vier Pfeiltasten den ASCII-Code 27 zurück. Ich muss aber zwischen den Richtungen unterscheiden können. ?(
icecreamman ist offline   Mit Zitat antworten
Alt 28.01.05, 19:51   #4 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

Ok, dann hilft Dir vielleicht das weiter!

http://pronix.linuxdelta.de/C/Linuxp...apitel10.shtml
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 28.01.05, 20:48   #5 (permalink)
Moderator
 
Benutzerbild von PuppE
 
Registriert seit: 13.12.04
PuppE Leistung: Facit NTK
Likes: 0
Standard

also wenn du bei getchr() immer ne 27 bekommst wprd ich an deiner stelle mal ne neue tasta kaufen soweit ich mich erinnere war die 27 die ESC taste ... wie hast du denn den tasten code eingelesen ? (also in ner while schleife oder nur eine taste oder in ner for schleife mit nem array .. ?)

mfg

püppi
__________________
[Wer glaubt, dass Projektleiter Projekte leiten, glaubt auch, dass Zitronenfalter Zitronen falten.]
PuppE ist offline   Mit Zitat antworten
Alt 28.01.05, 23:16   #6 (permalink)
 
Registriert seit: 03.01.05
Vevusio Leistung: Facit NTK
Vevusio eine Nachricht über ICQ schicken Vevusio eine Nachricht über AIM schicken Vevusio eine Nachricht über Yahoo! schicken
Likes: 0
Standard

hey.. getch wartet auf eine eingabe

also kommt es darauf an was du machen möchtest, für eine menüauswahl tut es getch() da du nebenbei nix anderes machen willst, wenn du dein programm irgendwie laufen lassen willst und zwischendurch sozusagen parallel schauen willst ob eine taste gedrückt ist machst du das mit kbhit(), das sagt dir ob ne taste gedrückt wurde, wenn nicht geht die funktion sofort zurück

allerdings bin ich mir jetzt nicht sicher ob sie wenn eine taste gedrückt ist gleich den ascii code zurückliefert, denk aber schon

wenn du es parallel machen willst kannst du es auch mit getch() machen und threads verwenden, allerdings ergeben sich dann wieder probleme wegen shared buffern usw, ist etwas forgeschritten

beziehungsweise kannst du auch mit der winapi über eine msgproc in deiner main schleife mit disposemessage und translatemessage usw (schau dir dazu am besten n tutorial an) schauen ob eine taste gedrückt wurde und wenn ja in der msgproc eine routine dafür einbauen

du könntest direct input von directx verwenden, usw.. aber wenn du einfaches simples c verwenden willst eben kbit() oder getch(), je nach dem was du brauchst

//edit
hier ne schicke lösung mit winapi, das progarmm erstellt lediglich ein windows fenster dass dann auf die eingaben reagiert wenn es aktiv ist, du hast aber auch ein consolenfenster auf dass du normal ausgeben kannst was du wahrscheinlich machen wirst, das windows fenster ist eh ganz klein

also.. das prog tut automatisch wenn ein key gedrückt wurde schaun ob in dem array keys[256] den entsprechenden wert auf true setzen, 0 ist zb 48 (sollte es zumindest sein) und dann brauchst du dich blos nach der while(!done) schleife nach dem peekmessage darum zu kümmern, so wie das prog jetzt ist schreibt er zb dauernd "a gedrückt" wenn die taste eben gerade gedrückt ist, du kannst aber auch dein prog normal laufen lassen weil er eben automatisch erkennt wenn eine taste gedrückt wurde, die jeweiligen ascii codes musst du halt nachsehen bzw ist eben in den defines 0-9 und a-z mit VK_A bis VK_Z und VK_0 bis VK_9 definiert

Code:
#include <windows.h>
#include <stdio.h>
#include "KeyDefines.h"

BOOL keys[256];
BOOL done;

LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
	switch( msg )
	{
	case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
			break;
	case WM_KEYDOWN:
			switch( wParam )
			{
			case VK_ESCAPE: 
				done = TRUE;
				break;
			default:
				keys[wParam] = TRUE;
				break;
			}
			return 0;
			break;
	case WM_KEYUP:
			keys[wParam] = FALSE;;
			return 0;
			break;
	}

    return DefWindowProc( hWnd, msg, wParam, lParam );
}

//INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
int main(int argc, char *argv[])
{
	MSG msg;
	const char* wndclassname = "Fensterchen";
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      wndclassname, NULL };
    RegisterClassEx( &wc );

    HWND hWnd = CreateWindow( wndclassname, "Input here", 
                              WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 0, 0,
                              NULL, NULL, wc.hInstance, NULL );

	while(!done)
	{
		while( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
		{
			TranslateMessage( &msg );
			DispatchMessage( &msg );
		}
		if(keys[VK_A])
		{
			printf("a gedrueckt");
		}
	}
    UnregisterClass( wndclassname, wc.hInstance );
    return 0;
}
und die keydefines..
Code:
#define VK_A 0x41
#define VK_B 0x42
#define VK_C 0x43
#define VK_D 0x44
#define VK_E 0x45
#define VK_F 0x46
#define VK_G 0x47
#define VK_H 0x48
#define VK_I 0x49
#define VK_J 0x4A
#define VK_K 0x4B
#define VK_L 0x4C
#define VK_M 0x4D
#define VK_N 0x4E
#define VK_O 0x4F
#define VK_P 0x50
#define VK_Q 0x51
#define VK_R 0x52
#define VK_S 0x53
#define VK_T 0x54
#define VK_U 0x55
#define VK_V 0x56
#define VK_W 0x57
#define VK_X 0x58
#define VK_Y 0x59
#define VK_Z 0x5A
#define VK_0 0x30
#define VK_1 0x31
#define VK_2 0x32
#define VK_3 0x33
#define VK_4 0x34
#define VK_5 0x35
#define VK_6 0x36
#define VK_7 0x37
#define VK_8 0x38
#define VK_9 0x39
Vevusio ist offline   Mit Zitat antworten
Alt 29.01.05, 00:37   #7 (permalink)
Moderator
 
Benutzerbild von PuppE
 
Registriert seit: 13.12.04
PuppE Leistung: Facit NTK
Likes: 0
Standard

in mehren Foren gleichzeitig die selba frage posten find ich irgendwie oll ... :/
http://www.pronix.de/modules/newbb/v...id=972&forum=2

mfg

püppi
__________________
[Wer glaubt, dass Projektleiter Projekte leiten, glaubt auch, dass Zitronenfalter Zitronen falten.]
PuppE ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Cursortasten abfragen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
per JS aktuelle URL abfragen... Watchme (Web-) Design und webbasierte Sprachen 2 27.08.09 22:48
get parameter in cgi/c++ abfragen Friedrich Code Kitchen 8 11.10.08 11:02
Netzwerkauslatung abfragen Antibus Code Kitchen 2 17.03.08 16:22
mit C++ phpTicketsystem abfragen MaUs# Code Kitchen 4 09.05.07 19:53
C - ARP Puffer abfragen Heinzi Code Kitchen 2 07.10.05 15:22


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61