c ++ - GetWindowRect give tilbage 0 RECT fra Start-menuen ved åbning

Indlæg af Hanne Mølgaard Plasc

Problem



Mit problem er, når startmenuen åbnes (jeg har EVENT\_OBJECT\_FOCUS via WinEventHook), giver GetWindowRect normalt {0,0,0,0} RECT og returnerer uden fejl.


Jeg lavede en testkode for det (kører, indtil jeg klikker på startknappen og stopper med 'Got {0,0,0,0}' (8 gange fra 10, 2 gange, det fortsætter))


Hvordan kan jeg forsikre mig om, at GetWindowRect altid giver tilbage gyldige data?


HWND hwnd = FindWindow(NULL, L"Start menu");
for (int cnt = 1; ; ++cnt)
{
    RECT r = {0,0,0,0};
    if(GetWindowRect(hwnd, &r))
    {
        if (r.left == 0 && r.top == 0 && r.right == 0 && r.bottom == 0)
        {
            cout << cnt << ": Got {0,0,0,0}";
            break;
        }
        else
        {
            cout << cnt << ": Ok" << endl;
        }
    }
    else
    {
        cout << cnt << ": Call failed!";
        break;
    }
}

Bedste reference