powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Делать или не делать…...............
11 сообщений из 11, страница 1 из 1
Делать или не делать…...............
    #37408725
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в приложение постоянно работает таймер с интервалом 10 (он проверяет выполнение короткого условия и если оно выполняется, то отрабатывается короткая процедура)
А вопрос простой, могут ли из-за такого интервала быть проблемы?
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408759
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
загрузка процессора.

еще, наверное, может быть проблема, если процедура обработки события таймера длится больше 10, тогда события будут выстраиваться в очередь и рано или поздно переполнят чашу

А без таймера никак?
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408792
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и без таймера в принципе, но надо отловить событие движение формы
пейнт формы, почему то не срабатывает
на счет процессора я подметил
а по поводу очереди я не подумал, может дуэвент поможет?
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408798
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дуэвент еще хуже

движение формы пользователем по экрану?
ну поставь хотя бы 100ms
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408838
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaЕсли в приложение постоянно работает таймер с интервалом 10
Постоянно злоупотребляю такими фишками, хотя сторонник чисел 500 или 1000 а не 10. За годы проблем не замечено.
Shocker.Proдуэвент еще хуже
Согласен. Особых проблем он не вызывает, но если не путаю, то будет визуально показывать полную загрузку процессора, хотя это фиктивно и не критично.
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408893
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему бы не отлавливать WM_MOVE?
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408907
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПочему бы не отлавливать WM_MOVE?
и то верно

кодФорма:
Код: plaintext
1.
2.
Private Sub Form_Load()
  InitWndProc Me.hWnd
End Sub
Модуль:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Option Explicit

Public Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hWnd As Long, ByVal lpString As String) As Long
Public Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hWnd As Long, ByVal lpString As String, ByVal hData As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Const GWL_WNDPROC As Long = - 4 
Public Const WM_MOVE = &H3


Public Sub InitWndProc(hWnd As Long)

If GetProp(hWnd, "prevptr") =  0  Then
  SetProp hWnd, "prevptr", SetWindowLong(hWnd, GWL_WNDPROC, AddressOf FrmProc)
End If

End Sub
Public Function FrmProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim lPrevWndProc As Long
lPrevWndProc = GetProp(hw, "prevptr")
If lPrevWndProc =  0  Then Exit Function

Select Case uMsg
  Case WM_MOVE
    Beep
End Select
FrmProc = CallWindowProc(lPrevWndProc, hw, uMsg, wParam, lParam)

End Function
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408913
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, с повышением, Шок :)
Теперь ты на законных основаниях можешь разблокировать курилку.)
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37408914
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКстати, с повышением, Шок :)
Теперь ты на законных основаниях можешь разблокировать курилку.)

Спасибо! Но не могу
Придется покуривать под спойлером украдкой
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37409729
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Спасибо за код
то что нужно и без лишнего изврата!
...
Рейтинг: 0 / 0
Делать или не делать…...............
    #37411221
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема в топике решена, но в дополнение: у мя в проге то же самое, с таймером 1 по очевидным нуждам. никаких лагов и тормозов за год использования не замечено, хотя процедура длинная сложная и тд. иногда, правда, процедура просто не выполняется(наверно, не успевает), но это происходит только после установки, после перезапуска всё работает норм
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Делать или не делать…...............
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]