Announcement

Collapse
No announcement yet.

Problem mit VK_INSERT

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit VK_INSERT

    Hallo,

    habe ein problem mit VK_INSERT und zwar wen ich mein Editor zum 1. mal öffne ist noch alles OK. Aber wen ich z.B. den Editor Beende und er steht auf "Überschreiben" und ich starte wieder mein Programm dann steht er auf "Überschreiben" und ist aber "Einfügen". Anders ist noch wen mein Programm nicht den Focus hat und man drückt die taste und dann wechselt man wieder zu mein Programm dann wechselt er wieder zu "Überschreiben" und es ist "Einfügen".

    Hier der Code
    Code:
    void TEditor::KeyStatus()
    {
    if (GetKeyState(VK_NUMLOCK) != 0)
    {
    StatusBar1->Panels->Items[4]->Bevel = pbLowered;
    } else {
    StatusBar1->Panels->Items[4]->Bevel = pbRaised;
    }
    if (GetKeyState(VK_CAPITAL) != 0)
    {
    StatusBar1->Panels->Items[3]->Bevel = pbLowered;
    } else {
    StatusBar1->Panels->Items[3]->Bevel = pbRaised;
    }
    if (GetKeyState(VK_INSERT) != 0)
    {
    StatusBar1->Panels->Items[2]->Text = " Einfügen";
    } else {
    StatusBar1->Panels->Items[2]->Text = " Überschreiben";
    }
    }
    //---------------------------------------------------------------------------
    
    
    void __fastcall TEditor::FormShow(TObject *Sender)
    {
    KeyStatus();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TEditor::RichEdit1KeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    KeyStatus();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TEditor::RichEdit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    KeyStatus();
    }
    //---------------------------------------------------------------------------
    Die anderen Beiden Tasten funktionieren aber nur INSERT nicht.
    Ich benutzte C++ Builder 6

    Ich hoffe das mir einer helfen kann habe schon vieles Probiert und geGooglet

    Danke dann im vorraus.
    MfG Rave

    -Jeder fängt mal klein an

  • #2
    http://msdn.microsoft.com/en-us/libr...01(VS.85).aspx

    The return value specifies the status of the specified virtual key, as follows:
    • If the high-order bit is 1, the key is down; otherwise, it is up.
    • If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
    Christian

    Comment


    • #3
      Danke

      aber wie kann ich den niederwertigen Bit ermitteln?
      Habe schon was versucht mit bitset ... kam aber immer nur fehler oder es funktionierte nicht ... weil ich mich noch nicht so aus mit bitset auskenne.

      Oder ist bitset falsch.
      MfG Rave

      -Jeder fängt mal klein an

      Comment


      • #4
        SHORT lowbyte= 1;
        SHORT highbyte = (1 << 15);

        SHORT taste = GetKeyState(VK_INSERT );
        if (taste & lowbyte)
        ->ToggleOn
        else
        ->ToggleOFF

        if(taste & highbyte)
        -> TasteDown
        else
        ->TasteUP
        Christian

        Comment


        • #5
          Danke

          aber was meinst du mit ToggleOn und ToggelOff da habe ich keine ahnung was ich dahin schreiben soll. Sowie mit TasteDown und TasteUp.

          Habe zwar schon was probiert aber es geht immer noch nicht und bei Google habe ich auch nix gefunden.
          MfG Rave

          -Jeder fängt mal klein an

          Comment


          • #6
            ??? Das gibt den Zustand der Tasten an ???
            Christian

            Comment


            • #7
              Ja das habe ich mir schon gedacht aber was muss ich schreiben um das mit der VK_INSERT zu ermitteln ob er auf Einfügen oder Überschreiben steht.
              MfG Rave

              -Jeder fängt mal klein an

              Comment


              • #8
                Ich weiss nicht aus dem Kopf, ob Toogle ON nun der Einfügen- oder Überschreibmodus ist.

                Das sollte sich durch einen simplen Test rausfinden lassen. Drücke die Taste und schau was für ein Wert drin steht
                Christian

                Comment


                • #9
                  Habe herraus gefunden das er das nicht von RichEDIT liest. Weil wen ich Windows neustarte und dann mein Editor funktioniert die taste VK_INSERT gut. Aber wen ich z.B. in Überschreib modus den Editor Beende und dann wieder starte ist Überschreib modus an, aber im RichEdit ist Einfügen.

                  Kann das sein das man

                  Bibliothek
                  User32.lib
                  DLL
                  User32.dll

                  irgend wie in das Programm einbinden muss ???

                  Die Header Datei habe ich eingebunden

                  Header
                  WinUser.h
                  Zuletzt editiert von Rave; 03.10.2010, 12:07.
                  MfG Rave

                  -Jeder fängt mal klein an

                  Comment


                  • #10
                    Kann das sein das man

                    Bibliothek
                    User32.lib
                    DLL
                    User32.dll

                    irgend wie in das Programm einbinden muss ???
                    Nein, nicht in einem C++Builder Standard Projekt

                    Auch

                    WinUser.h
                    das ist nicht erforderlich
                    Christian

                    Comment


                    • #11
                      OK Danke

                      Kann man im RichEdit irgent wie die Taste VK_INSERT überwachen ?
                      MfG Rave

                      -Jeder fängt mal klein an

                      Comment


                      • #12
                        Nur über die OnKey.... Ereignisse
                        Christian

                        Comment

                        Working...
                        X