GetClientRect liefert immer NULL zurück



  • Ausgangssituation ist folgende: Ich suche ein Fenster, finde es, will mit GetClientRect die größe / position arhalten. Problem ist, er findet zwar das Fenster und bekommt das handle aber GetClientRect liefert IMMER Null zurück, egal bei welchem Fenster ich es probiert habe.

    ...
    
    LPRECT m_GameRect;
    
    ...
    
    bool CGameWindow::GetGameRect()
    {
    	cout << "Trying to locate the Game Window" << endl;
    	if(GetClientRect(m_GameHWND,m_GameRect)==NULL)
    	{
    		cout << "Error, cant locate Game Window" << endl;
    	}
    	else
    	{
    		cout << "Window is at: " << m_GameRect->left << " and " << m_GameRect->top << endl;
    		return TRUE;
    	}
    }
    

    Hoffe ihr könnt mir helfen 🙂



  • verstehe was das LP bei LPRECT heißt



  • Hm... ja, es ist ein Long Pointer. Ich habe vorher auch schon versucht anstelle eines Pointers, einfach mal ein RECT zu nehmen und dann per pointer darauf zuzugreifen:

    RECT m_GameRect;
    
    ...
    if(GetClientRect(m_GameHWND,&m_GameRect)==NULL)
    ...
    

    Da kommt es aber zum Absturz 😮

    Ich bin noch ein relativer Anfänger, würde mich also über eine kurze Erklärung sehr freuen!



  • so ist es richtig wie du es gerade gepostet hast. wenn es da abstürzt liegt der fehler woanders



  • Ok. Ich werds jetzt nochmal probieren, hätte noch eine Frage

    RECT m_GameRect;
    ...
    
    m_GameRect = NULL;
    

    Bekomme dann solch einen Fehler

    error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'int' akzeptiert (oder keine geeignete Konvertierung möglich)
    1>        c:\program files\microsoft sdks\windows\v6.0a\include\windef.h(324): kann 'tagRECT &tagRECT::operator =(const tagRECT &)' sein
    

    Erklärung? 😮



  • du kannst keine Struktur mit einem int belegen...
    is doch auch iwie logisch.

    wenn du die Werte des RECT auf 0 setzen willst, musst du das wohl einzeln tun.

    da du allerdings NULL verwendet hast gehe ich davon aus, dass du einfach denkst, es wäre ein Zeiger, was hier allerdings nicht der Fall ist.

    MfG DrakoXP



  • SetRectEmpty(&m_GameRect);
    

Anmelden zum Antworten