Программирование на C++ глазами хакера

         

Обновление иконки


Код, который мы рассматривали в разд. 3.9.1 для анимации иконки, не эффективен, потому что реально не будет видно движения. Пользователь увидит только начальное и конечное положение, а перемещение останется за кадром. Чтобы исправить этот недостаток, нужно после изменения позиции иконки обновлять ее. Для этого нужно послать сообщение LVM_UPDATE:

HWND DesktopHandle = FindWindow("ProgMan", 0); DesktopHandle = GetWindow(DesktopHandle, GW_CHILD); DesktopHandle = GetWindow(DesktopHandle, GW_CHILD); for (int i=0; i100; i++) { SendMessage(DesktopHandle, LVM_SETITEMPOSITION, 0, MAKELPARAM(10, i)); SendMessage(DesktopHandle, LVM_UPDATE, 0, 0); Sleep(10); }

Здесь внутри цикла изменяется позиция нулевой иконки и обновляется ее изображение с помощью сообщения LVM_UPDATE. В данном случае третий параметр функци SendMessage также указывает на номер обновляемого элемента. Если нужно перерисовать вторую иконку, то код будет выглядеть так:

SendMessage(DesktopHandle, LVM_UPDATE, 2, 0);



Содержание раздела