Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.04.2008, 20:19

Per Tastatureingabe Buttons betätigen

Nabend alle zusammen...
schreibe gerade ein kleines WinApi Programm, und es ist soweit fertig.

Ich möchte nur noch ein paar Einstellungen vornehmen, die die Benutzerfreundlichkeit steigern.
So muss per VK_RETURN ein Button betätigt werden.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
                        // Wurde Return gedrückt?

                        case VK_RETURN:
                        {
                            // Button drücken

                            
                            return (0);
                            
                        }


Aber wie mach ich das jetzt?
Hab schon viel herumprobiert und die Child ID des Buttons oder ähnliches eingefügt... nützt nichts.

thx für Antworten...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

07.04.2008, 20:23

Du könntest z.B. die Funktion SendInput: http://msdn2.microsoft.com/en-us/library/ms646310(VS.85).aspx verwenden.
@D13_Dreinig

3

07.04.2008, 20:43

Naja... ich hab keine Ahnung was diese Funktion macht etc.

geht das nicht einfacher?

Ich hab gerade folgendes versucht:

C-/C++-Quelltext

1
2
3
4
5
6
7
case VK_RETURN:
                        {
                            

                            gedrueckt = 1;
                            return (0);
                        }


gedrückt hab ich einfacherhalber global deklariert

C-/C++-Quelltext

1
2
3
4
5
6
7
case ID_BTN_TEST:
       case gedrueckt == true:
{
            
// Code

                    return (0);
                }


aber jetzt sagt er mir:

Quellcode

1
1>c:\users\uwe\documents\visual studio 2008\projects\eine kleine anwendung\eine kleine anwendung\main.cpp(250) : error C2051: case-Ausdruck ist keine Konstante

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

07.04.2008, 20:53

Keine Ahnung wie du auf den Code kommst... Aber das kann so nicht funktionieren. Die Funktion simuliert eine Eingabe, z.B. einen Mausklick...
@D13_Dreinig

5

08.04.2008, 14:58

Wegen dem simuliren
Du könntest doch die Funktion SendMessage verwenden!

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

6

08.04.2008, 15:16

Macht man das net mit Acceleratoren ??

7

08.04.2008, 19:16

Bitte... leute

ich weiß das es die Funktion gibt.
Aber hat niemand ein praktisches Besipiel dafür? Kann das niemand hier erklären?

thx

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

08.04.2008, 19:39

Was passiert dann, wenn du deinen Button drückst? Genau es wird eine Message gesandt. Das kannst du jetzt selber machen, anstatt, man das per Mausklick macht.

http://msdn2.microsoft.com/en-us/library/ms644950(VS.85).aspx

so schwer ist diese Funktion ja auch wieder nicht.

Dann diese Funktion noch mit dem verbinden:

http://msdn2.microsoft.com/en-us/library/bb775943(VS.85).aspx

Und du hast die Lösung..

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

08.04.2008, 22:39

Zitat von »"raXor"«

Bitte... leute

ich weiß das es die Funktion gibt.
Aber hat niemand ein praktisches Besipiel dafür? Kann das niemand hier erklären?

thx


Doch, können tun es schon welche. Aber ein wenig Selbstinitiative ist ja wohl nicht verkehrt...
@D13_Dreinig

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

10

09.04.2008, 15:26

Ähm, ich glaub hier hat niemand den Threadersteller richtig verstanden. Er möchte Return nicht simulieren, sondern darauf reagieren.
Für Buttons gibt es sogar ein Flag (Name kenn ich nicht auswendig), sodass beim Druck auf Return der Button ausgelöst wird. Der Button wird dann auch farblich gekennzeichnet. Das dürfte das sein, was du suchst..

Ansonsten kann man den Druck auf Return übrigens nicht direkt in der Dialogprozedur abfangen, dafür muss man die Prozedur der Childelemente hooken. In der MSDN ist dazu ein Beispiel.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Werbeanzeige