Функция 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
Категория
Окна