Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » ctrl+c macht nicht, was es soll

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
27.04.2006, 09:49 Uhr
kleineSchildy



Hallo,

ich habe folgendes Problem. Beim Drücken von ctrl und c soll meine Funtion OnCopy() ausgeführt werden.

Es funktioniert aber nicht

Hier mal ein bißchen Code:


C++:
    if(pMsg->message == WM_KEYDOWN){
    
        if(control_pressed && pMsg->wParam==VK_C)

        if(pMsg->wParam == VK_CONTROL)
            control_pressed = TRUE;
        

    }

    if(pMsg->message == WM_KEYUP && pMsg->wParam == VK_CONTROL)
    {
        control_pressed = FALSE;
    }



Vor allem bereitet mir das VK_C Probleme, weil es das scheinbar nicht gibt. Wie kann ich sonst kontrollieren, ob c gedrückt wurde?
Auch das WM_KEYUP scheint so nicht zu funktionieren. control_pressed wird jedenfalls nicht wieder auf FALSE gesetzt.


Kann mir jemand dabei helfen? Sitze nun schon 2 Stunden davor und probiere rum

Viele Grüße
Jana
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.05.2006, 03:30 Uhr
CppProgrammer




C++:
BOOL CDIALOGDlg::PreTranslateMessage(MSG* pMsg)
{
    if(pMsg->message == WM_KEYDOWN)
    {
        if(GetAsyncKeyState(VK_CONTROL))
        {
            // CTRL + C
            if(pMsg->wParam == 'C')
            {
                OnCopy(); // Die Funktion, die du ausführen willst
                return true;
            }
        }
    }
    
    return CDialog::PreTranslateMessage(pMsg);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.05.2006, 07:58 Uhr
kleineSchildy



Hallo CPP-Programmierer,

danke für die Lösung, aber da gibt es ein Problem.
Die Funktion wird auch ausgeführt, wenn ich nur 'C' drücke. Irgendetwas scheint noch zu fehlen oder nicht richtig zu funktionieren

Ich habe jetzt noch folgendes eingefügt:

if(GetAsyncKeyState(VK_CONTROL) & 0x8000)

Der Effekt bleibt leider der Gleiche!

Hat jemand eine Idee?

Viele Grüße
Jana

Dieser Post wurde am 08.05.2006 um 08:27 Uhr von kleineSchildy editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.05.2006, 08:37 Uhr
Oliver
S2-Pixelgeneral


Für solche Strg+X - Sachen gibt es AFAIK Accelatoren oder wie die Dinger heißen wo du bestimmte Tasten angeben kannst und diese dann als Befehl in WM_COMMAND gesendet werden. Die musst du als Ressource zum Projekt hinzufügen.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.05.2006, 08:40 Uhr
~gast
Gast


probier mal


C++:
  
           if(pMsg->wParam == ( 'C'  &  MK_CONTROL)


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.05.2006, 08:51 Uhr
kleineSchildy



Hallo,

habe das Problem gelöst.

Ich habe meinen Button mit &Copy "initialisiert". Das führte wahrscheinlich dazu, das OnCopy() immer ausgeführt wurde, wenn ich 'c' gedrückt habe. Unabhängig davon, welche Taste noch gedrückt war.

Viele Grüße
Jana
 
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: