CBTProc HCBT_MOVESIZE - разное поведение в XP и 7
От: Minigo  
Дата: 25.07.11 08:20
Оценка:
Всем доброго времени суток.

Есть вот такой код


LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode < 0)
    {
        return CallNextHookEx(hCBTHook, nCode, wParam, lParam);
    }



    switch (nCode)
    {
    case HCBT_MOVESIZE:
        {
            // width
            int cx = GetSystemMetrics(SM_CXSCREEN);
            // height
            int cy = GetSystemMetrics(SM_CYSCREEN);

            ::GetCursorPos(&ptMouseInit);

........................
                        // only right side
            if (ptMouseInit.x >= cx - mDiff)
            {
                HWND hwnd = (HWND)wParam;
                 RECT *rect = (RECT*)lParam;
                hWnd = hwnd;
                
                int ind0 = 0;
                RECT rect0;
                HWND taskBar = ::FindWindow(L"Shell_traywnd", NULL);
                
                int dif = 0;
                if(taskBar && GetWindowRect(taskBar, &rect0)) 
                {
                    int ind0 = rect0.bottom - rect0.top;
                    dif = cy - ind0;
                    char ch0[50];
                    itoa(dif, ch0, 10);
                    MessageBoxA(0, ch0, ch0, 0);
                }

                rect->bottom = dif;
                 rect->left = cx/2;
                 rect->top = 0;
                 rect->right = cx;

                return FALSE;
            }
........................
        }
        break;
    
    case HCBT_SETFOCUS:
        {
            //MessageBoxA(NULL, "CBTProc", "HCBT_SETFOCUS", NULL);/////1
        }
        break;
    }

    return CallNextHookEx(hCBTHook, nCode, wParam, lParam);
}


В общем в 7 винде коно нормально меняет размеры, а вот в ХР только перемещается, но не меняет размер . Может кто подскажет, каким методо в этом случае менять размер ? Кстати SetWindowPos тоже не меняет размер, а только перемещает


25.07.11 17:54: Перенесено модератором из 'C/C++' — Odi$$ey
Re: CBTProc HCBT_MOVESIZE - разное поведение в XP и 7
От: Minigo  
Дата: 25.07.11 12:32
Оценка:
Странно под Window XP SetWindowPos или MoveWindow — меняют размер окна, но не смещают само окно в необходимые координаты, а если структуре указать размеры — окно перемещается, но не меняет размер . Раз тишина на форуме, то я тупо вызываю обе функции, хотя есть вероятность что сам косячу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.