Behandlungsroutine ähh ?



  • 1. Tread bitte löschen, da ist was schief gelaufen.



  • hallo,
    ich probiere gerade ein tut aus meinem Buch aus.
    Problem ist, dass mein Visual Studio in E ist und nicht in D 2. Ich arbeite mit ver.2008 und das Buch in 2003.

    ---------------------------
    1.Öffnen Sie das erste Dialogfeld. Markieren Sie das erste Optionsfeld im ersten Dialogfeld.
    // ok, kein Problem.

    2.Fügen Sie eine Behandlungsroutine für das Ereignis BN_CLICKED ein. Übernehmen Sie nicht den voreingestellten Namen für diese Funktion, sondern geben Sie den Namen OnRSelection ein.
    // wo soll ich was fügen?

    3.Öffenen Sie die Klassenansicht und dort die Klasse CGraphicsDlg. Im Ordner Zuordnung selektieren Sie MESSAGE. Selektieren Sie aus dem Kontextmenü Gehe zu Definition (siehe Abbildung 9.5).
    // abb 9.5 stimmt nicht ganz mein meinem VS überein ?!
    Die abb 9.5:
    feledi.de/1x.gif

    ...so soll das später aussehen:

    BEGIN_MESSAGE_MAP(CGraphicsDlg, CDialog)
    
      ON_WM_SYSCOMMAND()
      ON_WM_PAINT()
      ON_WM_QUERYDRAGICON()
      //}}AFX_MSG_MAP
      ON_BN_CLICKED(IDC_EXIT, OnBnClickedExit)
      ON_BN_CLICKED(IDC_RTPEN, OnRSelection)
    
    END_MESSAGE_MAP()
    

    ----------------------------
    Bei sieht das so aus:
    feledi.de/2x.JPG
    Wie/Wo soll ich onClick mit OnRSelection erstellen?
    Mein code Ausschnitt sieht so aus:

    BEGIN_MESSAGE_MAP(CGraphicsDlg, CDialog)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	//}}AFX_MSG_MAP
    
    	ON_BN_CLICKED(IDC_BEXIT, &CGraphicsDlg::OnBnClickedBexit)
    END_MESSAGE_MAP()
    

    Ich könnte jetzt auch die Zeile per Hand eintragen, aber dann sagt der Compiler, er kennt kein OnRSelection.

    Ich bin für jeden Tip Dankbar.


  • Mod

    Du musst über den Classview gehen. Oder einfach über den Dialog-Edtor und dort auf dem Button einen neuen Handler einrichten. Rechte Maustaste auf dem Button sollte Dir weiter helfen.

    Nur den Map-Eintrag machen genügt natürlich ncith. Du benötigst auch die Deklaration in der Klasse (im Header).



  • danke,
    deine Worte sind wie immer Goldwert!

    ok, ich habe den Weg über Rechtsklick Button genommen.

    das wurde mir erstellt:
    ON_BN_CLICKED(IDC_RTPEN, &CGraphicsDlg::OnRSelection)

    Laut Buch soll ich aber bekommen:
    ON_BN_CLICKED(IDC_RTPEN, OnRSelection)

    liegt das an der VS version?
    soll ich jetzt ->> &CGraphicsDlg:: mitreinnehmen oder nicht?

    Mit oder ohne, der Compiler merkert nicht.

    --------
    2.Problem:
    paar Seiten weiter kommt in meinem Buch:

    1. Fügen Sie eine Behandlungsroutine für die Nachricht WM_PAINT in die zweite Dialogfeldklasse (CPaintDlg) ein.
    

    Blöd ist nur, dass mein Zweites Dialogfenster kein Buttion hat, wenn ich vorrübergehend einen Setze,dann finde ich kein WM_Paint in meinem Händler ?!



  • habs hinbekommen.
    Knoten öffnen von der Klasse / Eigenschaften / Ereignisse / WM_Paint / hinzufügen.
    Das habe ich durchzufall in einem anderen C++ Buch gelesen. 🙂


Anmelden zum Antworten