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.