Steuerelemente auf CDialogBar



  • Hallo,

    ich möchte ein Fenster in meiner SDI-Anwendung haben, das immer sichbar sein soll, also leite ich die Klasse von CDialogBar ab. Auf dem zugehörigen Dialog habe ich ein Edit-Feld und eine Combo-Box. Mein Problem: Ich habe mit dem Klassenassisstent einige Member-Variablen für die Klasse erstellt (für das Edit- und das Combo-Feld), allerdings scheinen diese ignoriert zu werden. Die dem Edit-Feld zugehörige CString-Variable wird nicht angezeigt und ein AddString-Aufruf auf die Combobox-Control-Variable wird mit einem Absturz beantwortet. Da der Klassenassisstent bei der neuen Erzeugung einer Dialogklasse den CDialogBar-Typ nicht anbietet, habe ich die Basisklasse nachträglich manuell von CDialog auf CDialogBar geändert.

    Hoffe, ihr könnt mir helfen 🙂



  • Du brauchst keine Klasse hinter den Dialog zu setzen. Das Mainframe kann die Messages des Controls handlen. Wenn du eine CDialogBar ableitest weiß das Mainframe (und die erstellte Dialogbar) nix davon und ignoriert es...



  • Danke! Hast mir mal wieder viel weitergeholfen 🙂 Aber wie ist das mit den Systemnachrichten? Ich will, dass sich mein Dialog durch OnPaint neuzeichnen. Ich kann zwar für CMainFrame ein WM_PAINT Ereignis festlegen, aber wie stelle ich dann ob das überhaupt dem Dialog gegolten hat? Die ID des Dialogs taucht in der Objekt ID Liste des Assisstenten nicht auf 😕

    [Edit]:

    Noch ne Frage, die ich zum Dialog-Zeichnen bräuchte: Wie kann ich die Hintergrundfarbe des Dialoges erfragen (Die ist ja WIMNI bei XP anders als bei 98 oder so...)?

    [ Dieser Beitrag wurde am 22.01.2003 um 21:01 Uhr von Phobos editiert. ]



  • Kann mir wirklich niemand helfen? Ich bin schon ganz verzwifelt 😕



  • Also ich hab da ne eigene Klasse abgeleitet:

    #ifndef _MYDIALOGBAR_
    #define _MYDIALOGBAR_
    
    #include <afxext.h>
    
    class CMyDialogBar : public CDialogBar
    {
    public:
    	void OnPaint();
    };
    
    //Jetzt OnPaint und alles andere z.B. OnSize überschreiben
    
    void CMyDialogBar::OnPaint() 
    {	
    	CClientDC pDC(this);//Gilt nur für DialogBar!
    	pDC.TextOut(0,0,"PAINT");
    	CDialogBar::OnPaint();		
    }
    
    #endif
    

    Is jetzt nicht professionell aber es geht.

    Was ich hier mach is eh nur für die Nachwelt, es sind eh schon 2Jahre vergangen


Anmelden zum Antworten