Функция UpdateWindow

Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
UpdateWindow обновляет клиентскую область указанного окна, посылая ему сообщение WM_PAINT, в случае, если обновляемая область окна не пуста. Функция посылает сообщение WM_PAINT напрямую процедуре указанного окна, минуя очередь сообщений приложения. Если обновляемая область окна пуста, то сообщение не посылается. Вызов функции аналогичен методу Refresh
hwnd
Дескриптор обновляемого окна. Для получения дескриптора окна, находящегося на переднем плане используйте функцию GetForegroundWindow. Windows 98 и Windows NT 4.0 SP3 или выше: Для получения дескриптора активного окна с очередью сообщений другого потока используйте функцию GetGUIThreadInfo

Пример

' Делаем фон для надписей к иконкам
' на Рабочем столе прозрачным
Dim bRet             As Boolean
Dim lProgman         As Long
Dim lSHELLDLLDefView As Long
Dim lSysListView32   As Long

' Получим дескриптор окна класса "Progman"
' и с именем "Program Manager"
lProgman = FindWindow("Progman", "Program Manager")
If lProgman = 0 Then Exit Sub
' Получим дочернее окно Program Manager
' с именем класса "SHELLDLL_DefView"
lSHELLDLLDefView = FindWindowEx(lProgman, 0&, "SHELLDLL_DefView", vbNullString)
If lSHELLDLLDefView = 0 Then Exit Sub
' Теперь получим дочернее окно этого окна
lSysListView32 = FindWindowEx(lSHELLDLLDefView, 0&, "SysListView32", vbNullString)
If lSysListView32 = 0 Then Exit Sub
' Делаем фон для текста к иконкам прозрачным, а текст красным
bRet = ListView_SetTextBkColor(lSysListView32, CLR_NONE)
Call InvalidateRect(lSysListView32, ByVal 0&, True)
Call UpdateWindow(lSysListView32)

Private Function ListView_SetTextBkColor(hwnd As Long, clrTextBk As Long) As Boolean Dim lRet As Long lRet = SendMessage((hwnd), LVM_SETTEXTBKCOLOR, 0&, clrTextBk) ' Красный цвет lRet = SendMessage((hwnd), LVM_SETTEXTCOLOR, 0&, RED) If lRet = 0 Then ListView_SetTextBkColor = False Else ListView_SetTextBkColor = True End If End Function

Категория

Окна