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

  • »MuesliSchuessel« ist der Autor dieses Themas

Beiträge: 25

Beruf: Schüler

  • Private Nachricht senden

1

12.03.2013, 20:25

Hotkeys über Accelerator aus Resource C++ WINAPI

Hallo.

Ich will bei meinem Programm (so ne Art Texteditor bisher) ,Datei mit Strg+O z.B. öffnen kann ,bzw. allgemein solche Tastenkombinationen verwenden ,damits einfacher zu bedienen wird.
Dazu hab einen Accelerator erstellt und lad den dann :

Quellcode

1
2
3
4
5
6
7
//resource.rc (Ausschnitt)
 IDR_HOT_KEYS ACCELERATORS
{
    "o",            ID_CTRL_O, ASCII, CONTROL
    "s",            ID_CTRL_S, ASCII, CONTROL
    "s",            ID_CTRL_SHIFT_S, ASCII, CONTROL, SHIFT
}

C-/C++-Quelltext

1
2
//laden in HACCEL
hAccel = LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_HOT_KEYS));

Mein Ansatz mit googel und MSDN sieht jetzt so aus :

C-/C++-Quelltext

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
//Hauptschleife
void loop(MSG msg)
{
    while(GetMessage(&msg,NULL,0,0))
    {
        if(!TranslateAccelerator(hEdit,hAccel,&msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}

//WindowProc

LRESULT CALLBACK WindowProc (HWND hWnd,UINT msg,WPARAM wPar,LPARAM lPar)
{   
    switch(msg)
    {
        case WM_DESTROY:
        {
            PostQuitMessage(0);
        }break;
        case WM_COMMAND:
        {
            if(HIWORD(wPar) == 1)
            {
                switch(LOWORD(wPar))
                {
                case ID_CTRL_O:
                    {
                        data_open();
                    }break;
                case ID_CTRL_S:
                    {
                        data_save();
                    }break;
                case ID_CTRL_SHIFT_S:
                    {
                        data_save_as();
                    }break;
                }
            }
            else
            {
                switch(wPar)
                {
                    //Anweisungen von Menupunkten
                }
            }
        }break;
        case WM_SIZE:
        {
            win_size();
        }break;
    }
    return (DefWindowProc(hWnd,msg,wPar,lPar));
}

Naja das will nicht so ganz funktionieren .
Möchte mich da bitte jemand aufklären ,was ich da falsch gemacht habe ? :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

12.03.2013, 21:05

Und was genau funktioniert nicht?

  • »MuesliSchuessel« ist der Autor dieses Themas

Beiträge: 25

Beruf: Schüler

  • Private Nachricht senden

3

13.03.2013, 14:45

Es passiert einfach gar nichts ,wenn ich z.B., STRG+O drücke. Alles andere geht,außer die Hotkeys

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

13.03.2013, 14:49

Und woran scheiterts genau? Die von dir benutzten WinAPI Funktionen liefern alle entsprechende Fehlercodes und es gibt sowas wie einen Debugger... ;)

  • »MuesliSchuessel« ist der Autor dieses Themas

Beiträge: 25

Beruf: Schüler

  • Private Nachricht senden

5

17.03.2013, 16:57

Ja die Fehlercodes ... das ist so ne Sache ... die geben mir alle erflogreich zurück ,also keinen Fehler. Und der Debugger...hat auch nicht viel gebracht . Die Abfrage in der Hauptschleife ist immer false ,bzw. es wird immer TranslateMessage und DispatchMessage aufgerufen . Ich bin damit leider Gottes etwas überfordert .__.

Werbeanzeige