GetWindowRect liefert falsche Werte im Releasemodus



  • Guten Tag

    Ich habe das Problem das aus irgend einem Grund bei meinem dialogfeldbasierenden Programm GetWindowRect im Releasemodus einen falschen Wert (Fensterunterseite = 0xFFFF) zurückgibt.
    Weis zufällig woran das liegen könnte?

    Ich verwende VisualStudio 2005 unter Windows7 64bit

    // Der fragliche Codeabschnit
    BOOL CProgrammklasseDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
    
    	// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
    	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);
    		}
    	}
    
    	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
    	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
    
    	// Ermitteln der Fenstergröße um sie als Minimum in OnGetMinMaxInfo zu verwenden
    	GetWindowRect(&m_cRectWndMin);
    	
    	// Ausgabe der Fensterdaten zu testzwecken
    	// Im Releasemodus enthält cRectWndMin.bottom immer den Wert 0xFFFF
    	CString strTest;
    	strTest.Format(_T("L: %d\nO: %d\nR: %d\nU: %d\n\n\nBreit: %d\nHoch: %d"),
    					m_cRectWndMin.left,
    					m_cRectWndMin.top,
    					m_cRectWndMin.right,
    					m_cRectWndMin.bottom,
    					m_cRectWndMin.Width(),
    					m_cRectWndMin.Height());
    	MessageBox(strTest);
    
    	// Dem Startknopf den Eingabefokus geben
    	GetDlgItem(IDC_BUTTON_START)->SetFocus();
    
    	// Den Funktionen mitteilen das das Programmfenster initialisiert wurde
    	m_bInit = true;
    
    	return FALSE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
    }
    

  • |  Mod

    Hast Du evtl. Deinen OnMinMax Handler schon laufen lassen und der hat die Werte schon manipuliert und das evtl. falsch?



  • Vielen Dank

    Das wars.
    Ich hatte aus irgend einem Grund im Anflug von geistiger Umnachtung in OnGetMinMaxInfo die Abfrage von m_bInit ausgeblendet.