MASCH: Visual C++ Schaltfläche als Grafik darstellen und ...

Ich weiß das ich hier nicht ganz richtig bin aber in diesem Forum ist mir bei JAVA JS und HTML immer sehr gut weitergeholfen wurden.

Wie kann ich in Visual c++ einen Button als Grafik darstellen (natürlich mit gleichen eigenschafften wie der Button)
Und
Ist es möglich nach Betätigung eines Button andere Button auf der gleichen Oberfläche für zwei bis drei sec. zu sperren? Wenn ja wie stelle ich das an.
Und
Ist es möglich nach Betätigung eines Button die Farbe zu wechseln bzw die Grafik?

Habt Ihr vielleicht einen Vorschlag wo ich Beispiele solcher Art finde?

Danke Grüße MASCH

  1. Hallo,

    also an und ausschalten von Buttonen geht mit ControlVariableButton.EnableWindow(true oder false). Für das Zeitgesteuerte brauchst Du nen Timer, dann geht das auch.

    Und das mit den Bitmap auf Button geht so:

    1. Auf der Eigenschaftenseite des Buttons ist die Option "Bitmap" unter "Formate" auszuwählen.

    2. Im Sourcecode des Programms ist dann noch folgendes zu tun... (siehe Beispielfunktion)

    void CBitmapButtonDlg::IrgendeineFunktion()
    {
         //Instance-Handle besorgen
         HINSTANCE hInstance = AfxGetInstanceHandle();
         //Bitmap-Handle besorgen und Bitmap laden
        HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
        //Bitmap auf Button bringen
     m_button.SetBitmap(hBitmap);
    }

    -> IDB_BITMAP1 ist die Ressourcen ID des Bildes
    -> m_button ist die Membervariable des Buttons

    Das wars schon.

    Zum wechseln der Button-Grafik ladst Du dann anfach ein neues auf den Button.

    Manuela

    1. Hallo,

      also an und ausschalten von Buttonen geht mit ControlVariableButton.EnableWindow(true oder false). Für das Zeitgesteuerte brauchst Du nen Timer, dann geht das auch.

      Und das mit den Bitmap auf Button geht so:

      1. Auf der Eigenschaftenseite des Buttons ist die Option "Bitmap" unter "Formate" auszuwählen.
      1. Im Sourcecode des Programms ist dann noch folgendes zu tun... (siehe Beispielfunktion)

      void CBitmapButtonDlg::IrgendeineFunktion()
      {
           //Instance-Handle besorgen
           HINSTANCE hInstance = AfxGetInstanceHandle();
           //Bitmap-Handle besorgen und Bitmap laden
          HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
          //Bitmap auf Button bringen
      m_button.SetBitmap(hBitmap);
      }

      -> IDB_BITMAP1 ist die Ressourcen ID des Bildes
      -> m_button ist die Membervariable des Buttons

      Das wars schon.

      Zum wechseln der Button-Grafik ladst Du dann anfach ein neues auf den Button.

      Manuela

      Vielen Dank für Deine Hilfe aber ich komme noch nicht ganz klar
      Wo finde ich die Ressourcen ID eines Bildes bzw wo lege ich dies fest
      bei der Membervariablen bekomme ich den Fehler das der linke Teil von .setBitmap eine Klasse/Struktur/Union sein muss
      ich bin übrigens Neuling in c++ also bitte nicht aufregen
      Danke für Deine Hilfe

      1. Hallo,

        also an und ausschalten von Buttonen geht mit ControlVariableButton.EnableWindow(true oder false). Für das Zeitgesteuerte brauchst Du nen Timer, dann geht das auch.

        Und das mit den Bitmap auf Button geht so:

        1. Auf der Eigenschaftenseite des Buttons ist die Option "Bitmap" unter "Formate" auszuwählen.
        1. Im Sourcecode des Programms ist dann noch folgendes zu tun... (siehe Beispielfunktion)

        void CBitmapButtonDlg::IrgendeineFunktion()
        {
             //Instance-Handle besorgen
             HINSTANCE hInstance = AfxGetInstanceHandle();
             //Bitmap-Handle besorgen und Bitmap laden
            HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
            //Bitmap auf Button bringen
        m_button.SetBitmap(hBitmap);
        }

        -> IDB_BITMAP1 ist die Ressourcen ID des Bildes
        -> m_button ist die Membervariable des Buttons

        okay, um m_button anzulegen gehst du in den ClassWizard(Strg+W) tuts auch dort gehst Du auf die Registerkarte für Membervariable suchst die Id für den Button, anklicken, dann Variable hinzufügen Name vergeben und aufpassen, das in dem einen Feld weiter unten Control drin steht.

        Vielen Dank für Deine Hilfe aber ich komme noch nicht ganz klar
        Wo finde ich die Ressourcen ID eines Bildes bzw wo lege ich dies fest

        Also von Dir aus gesehen Bildschirm oben Menü Insert dann Ressource Bitmap und nun kannst Du eins selbst zeichnen oder von irgendwo reinladen und hast die ID die du noch ändern kannst Rechst oder bei Properties stehen.
        Manuela

        1. Hallo,

          also an und ausschalten von Buttonen geht mit ControlVariableButton.EnableWindow(true oder false). Für das Zeitgesteuerte brauchst Du nen Timer, dann geht das auch.

          Und das mit den Bitmap auf Button geht so:

          1. Auf der Eigenschaftenseite des Buttons ist die Option "Bitmap" unter "Formate" auszuwählen.
          1. Im Sourcecode des Programms ist dann noch folgendes zu tun... (siehe Beispielfunktion)

          void CBitmapButtonDlg::IrgendeineFunktion()
          {
               //Instance-Handle besorgen
               HINSTANCE hInstance = AfxGetInstanceHandle();
               //Bitmap-Handle besorgen und Bitmap laden
              HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
              //Bitmap auf Button bringen
          m_button.SetBitmap(hBitmap);
          }

          -> IDB_BITMAP1 ist die Ressourcen ID des Bildes
          -> m_button ist die Membervariable des Buttons

          okay, um m_button anzulegen gehst du in den ClassWizard(Strg+W) tuts auch dort gehst Du auf die Registerkarte für Membervariable suchst die Id für den Button, anklicken, dann Variable hinzufügen Name vergeben und aufpassen, das in dem einen Feld weiter unten Control drin steht.

          Vielen Dank für Deine Hilfe aber ich komme noch nicht ganz klar
          Wo finde ich die Ressourcen ID eines Bildes bzw wo lege ich dies fest

          Also von Dir aus gesehen Bildschirm oben Menü Insert dann Ressource Bitmap und nun kannst Du eins selbst zeichnen oder von irgendwo reinladen und hast die ID die du noch ändern kannst Rechst oder bei Properties stehen.
          Manuela

          Super vielen Dank
          Das mit den Bitmaps habe ich hinbekommen, nur wird das Bild nicht angezeigt !
          (IDB_BITMAP1) kann ich doch so stehen lassen??

          1. Das mit den Bitmaps habe ich hinbekommen, nur wird das Bild nicht angezeigt !
            (IDB_BITMAP1) kann ich doch so stehen lassen??

            Ja kannst Du, ich bin mir jetzt nicht ganz sicher, aber es könnte sein wenn Du das in ner Funktion machst, das Du da noch ein UpdateData(false) machen mußt, damit es auch gezeichnet wird. Wenn es von anfang an sichtbar sein soll, dann muss es in die Init - Funktion des Dialoges.

            Manuela

            1. Das mit den Bitmaps habe ich hinbekommen, nur wird das Bild nicht angezeigt !
              (IDB_BITMAP1) kann ich doch so stehen lassen??

              Ja kannst Du, ich bin mir jetzt nicht ganz sicher, aber es könnte sein wenn Du das in ner Funktion machst, das Du da noch ein UpdateData(false) machen mußt, damit es auch gezeichnet wird. Wenn es von anfang an sichtbar sein soll, dann muss es in die Init - Funktion des Dialoges.

              Manuela

              Wohin das UpdateData(false);
              oder wo muss ich das in die Init setzen und vorallem was
              Das Bild sollte schon von Anfang an zu sehen sein anstatt des Buttons

              1. Wohin das UpdateData(false);

                das muss hinter das setBitmap

                oder wo muss ich das in die Init setzen und vorallem was
                Das Bild sollte schon von Anfang an zu sehen sein anstatt des Buttons

                Du kannst per ClassenWizard die Funktion OnInitDialog hinzufügen, und in der mußt du dann alles machen, was gleich von anfang an sichtbar sein soll, also auch das mit dem SetBitmap und natürlich vor load und das alles.

                Manuela