Benennung des Fensters ändern, geht aber nicht :-(



  • Hallo,

    ich möchte die Bezeichnung des Fensters ändern, aber irgendwie geht das nicht.
    Habe folgendes implementiert :

    void CTom1Dlg::OnTechnikButton() 
    {
    	// TODO: Add your control notification handler code here
    	CFragenDialog FragenFenster;
    	FragenFenster.SetWindowText("Fragen zur I.C.-Technik");
    	FragenFenster.DoModal();
    
    }
    

    Wo ist denn mein Fehler *grübel*

    Vielen Dank schonmal ist bestimmt recht easy...



  • Ich würd n UpdateData(FALSE)dadrunter setzen und hoffen, dass es dann funktioniert 😕
    sorry, sonst seh ich auch keinen Fehler 😞



  • Geht immernoch nicht 😞



  • Ist zwar nicht die beste Methode, aber versuchs mal mit FindWindow !

    HWND hwnd = ::FindWindow("Klasse des Fensters", NULL);
    ::SetWindowText(hwnd, "Fragen zur I.C.-Technik");
    

    Die Klasse kannst du mit Spy++ rausfinden !
    Vielleicht geht das ...

    Gruß
    :: NoName ::



  • das versteh ich jetzt irgendwie nicht



  • Naja ... wie erstellst du denn CFragenDialog ?
    Mit new ?

    Vielleicht ein bisschen mehr Code ?



  • CFragenDialog ist eine neue Klasse die ich hinzugefügt habe weil es ein neues Dialogfenster ist.

    Mein MainWindow ist ein Fenster mit ein paar Buttons,
    Nach Auswahl eines Buttons soll ein neues Fenster geöffnet werden,
    in diesem Fenster ist ein Edit-Feld in dem eine Frage steht
    und darunter 4 CheckBoxen mit Antwortmöglichkeiten.

    Je nach Button, den man im MainWindow gewählt hat, soll dann der Name des
    neuen Fensters geändert werden, bzw. es muß sich dann auch die Bezeichnung
    der Antworten ändern, was auch noch nicht so recht geht 😞

    // FragenDialog.cpp : implementation file
    //
    
    #include "stdafx.h"
    #include "Tom1.h"
    #include "FragenDialog.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CFragenDialog dialog
    
    CFragenDialog::CFragenDialog(CWnd* pParent /*=NULL*/)
    	: CDialog(CFragenDialog::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(CFragenDialog)
    	m_FragenBox = _T("");
    	m_Antwort3 = FALSE;
    	m_Antwort2 = FALSE;
    	m_Antwort1 = FALSE;
    	//}}AFX_DATA_INIT
    }
    
    void CFragenDialog::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CFragenDialog)
    	DDX_Control(pDX, IDC_CHECK4, m_Antwort4);
    	DDX_Text(pDX, IDC_EDIT1, m_FragenBox);
    	DDX_Check(pDX, IDC_CHECK3, m_Antwort3);
    	DDX_Check(pDX, IDC_CHECK2, m_Antwort2);
    	DDX_Check(pDX, IDC_CHECK1, m_Antwort1);
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CFragenDialog, CDialog)
    	//{{AFX_MSG_MAP(CFragenDialog)
    		// NOTE: the ClassWizard will add message map macros here
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CFragenDialog message handlers
    
    void CFragenDialog::SetFragenBoxText(CString Text)
    {
    	m_FragenBox = Text;
    }
    
    void CFragenDialog::SetAntwortText(int AntwortNr, CString Text)
    {
    	switch(AntwortNr)
    	{
    	case 1:
    		break;
    	case 2:
    		break;
    	case 3:
    		break;
    	case 4:
    		m_Antwort4.SetWindowText(Text);
    		break;
    	}
    
    }
    
    // Tom1Dlg.cpp : implementation file
    //
    
    #include "stdafx.h"
    #include "Tom1.h"
    #include "Tom1Dlg.h"
    #include "FragenDialog.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About
    
    class CAboutDlg : public CDialog
    {
    public:
    	CAboutDlg();
    
    // Dialog Data
    	//{{AFX_DATA(CAboutDlg)
    	enum { IDD = IDD_ABOUTBOX };
    	//}}AFX_DATA
    
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CAboutDlg)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	//}}AFX_VIRTUAL
    
    // Implementation
    protected:
    	//{{AFX_MSG(CAboutDlg)
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    
    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    	//{{AFX_DATA_INIT(CAboutDlg)
    	//}}AFX_DATA_INIT
    }
    
    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CAboutDlg)
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    	//{{AFX_MSG_MAP(CAboutDlg)
    		// No message handlers
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTom1Dlg dialog
    
    CTom1Dlg::CTom1Dlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CTom1Dlg::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(CTom1Dlg)
    		// NOTE: the ClassWizard will add member initialization here
    	//}}AFX_DATA_INIT
    	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    void CTom1Dlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CTom1Dlg)
    		// NOTE: the ClassWizard will add DDX and DDV calls here
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CTom1Dlg, CDialog)
    	//{{AFX_MSG_MAP(CTom1Dlg)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	ON_BN_CLICKED(IDC_BUTTON1, OnTechnikButton)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTom1Dlg message handlers
    
    BOOL CTom1Dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Add "About..." menu item to system menu.
    
    	// IDM_ABOUTBOX must be in the system command range.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// Set the icon for this dialog.  The framework does this automatically
    	//  when the application's main window is not a dialog
    	SetIcon(m_hIcon, TRUE);			// Set big icon
    	SetIcon(m_hIcon, FALSE);		// Set small icon
    
    	// TODO: Add extra initialization here
    
    	return TRUE;  // return TRUE  unless you set the focus to a control
    }
    
    void CTom1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    	{
    		CAboutDlg dlgAbout;
    		dlgAbout.DoModal();
    	}
    	else
    	{
    		CDialog::OnSysCommand(nID, lParam);
    	}
    }
    
    // If you add a minimize button to your dialog, you will need the code below
    //  to draw the icon.  For MFC applications using the document/view model,
    //  this is automatically done for you by the framework.
    
    void CTom1Dlg::OnPaint() 
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // device context for painting
    
    		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    
    		// Center icon in client rectangle
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// Draw the icon
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else
    	{
    		CDialog::OnPaint();
    	}
    }
    
    // The system calls this to obtain the cursor to display while the user drags
    //  the minimized window.
    HCURSOR CTom1Dlg::OnQueryDragIcon()
    {
    	return (HCURSOR) m_hIcon;
    }
    
    void CTom1Dlg::OnTechnikButton() 
    {
    	// TODO: Add your control notification handler code here
    	CFragenDialog FragenFenster;
    //	FragenFenster.SetWindowText("Fragen zur I.C.-Technik");
    //	UpdateData(FALSE);
    	FragenFenster.SetFragenBoxText("Dies ist eine Frage");
    	FragenFenster.SetAntwortText(4,"Test");
    	FragenFenster.DoModal();
    
    }
    


  • probier mal folgendes: implementier in den fragendialog ne initinstance
    und führe dort this->SetWindowText("blub"), gefolgt von einem UpadateData(false) aus. dann müsstes eigentlich klappen.

    Esco



  • Hmm, sicherlich liegt es daran, dass du das Window erst öffnen musst und dann SetWindowText einsetzen musst !

    CFragenDialog FragenFenster; 
        FragenFenster.DoModal(); 
        FragenFenster.SetWindowText("Dies ist eine Frage"); 
        FragenFenster.SetAntwortText(4,"Test");
    

    Gruß
    :: NoName ::



  • @NoName:
    Das funktioniert so natürlich nicht, weil DoModal erst wieder zurückkehrt, wenn das Fenster schon wieder geschlossen wurde.

    Esco hat die Lösung schon gepostet. Außer, dass das UpdateData total überflüssig ist.


Log in to reply