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

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

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

движение формы пользователем по экрану?
ну поставь хотя бы 100ms
...
Рейтинг: 0 / 0
23.08.2011, 23:23
    #37408838
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делать или не делать…...............
TpaBkaЕсли в приложение постоянно работает таймер с интервалом 10
Постоянно злоупотребляю такими фишками, хотя сторонник чисел 500 или 1000 а не 10. За годы проблем не замечено.
Shocker.Proдуэвент еще хуже
Согласен. Особых проблем он не вызывает, но если не путаю, то будет визуально показывать полную загрузку процессора, хотя это фиктивно и не критично.
...
Рейтинг: 0 / 0
24.08.2011, 00:04
    #37408893
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делать или не делать…...............
Почему бы не отлавливать WM_MOVE?
...
Рейтинг: 0 / 0
24.08.2011, 00:20
    #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
24.08.2011, 00:24
    #37408913
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делать или не делать…...............
Кстати, с повышением, Шок :)
Теперь ты на законных основаниях можешь разблокировать курилку.)
...
Рейтинг: 0 / 0
24.08.2011, 00:25
    #37408914
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Делать или не делать…...............
AntonariyКстати, с повышением, Шок :)
Теперь ты на законных основаниях можешь разблокировать курилку.)

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

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


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