На слайдере ползунок не устанавливается в нужную позицию

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
visualman
Бывалый
Бывалый
 
Сообщения: 228
Зарегистрирован: 08.02.2002 (Пт) 19:06
Откуда: Russia

На слайдере ползунок не устанавливается в нужную позицию

Сообщение visualman » 04.07.2007 (Ср) 11:34

Проблема:
Требуется с помощью SendMessage в чужой программе устанавливать ползунок в нужное положение. Вот код:


Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Const WM_USER As Long = &H400
Private Const TBM_GETRANGEMAX As Long = (WM_USER + 2)
Private Const TBM_GETRANGEMIN As Long = (WM_USER + 1)
Private Const TBM_GETPOS As Long = (WM_USER)
Private Const TBM_SETPOS As Long = (WM_USER + 5)


Private Sub Command1_Click()
Dim Result As Long
Dim min As Long
Dim Max As Long
Dim i As Long
min = SendMessage(132798, TBM_GETRANGEMIN, 0, 0)
MsgBox "Ìèíèìóì = " & min

Max = SendMessage(132798, TBM_GETRANGEMAX, 0, 0)
MsgBox "Ìàêñèìóì = " & Max

Result = SendMessage(132798, TBM_GETPOS, 0, 0)
MsgBox "Òåêóùåå çíà÷åíèå = " & Result


For i = min To Max
Result = SendMessage(132798, TBM_SETPOS, True, i)
'MsgBox "Óñòàíàâëèâàåì íîâîå çíà÷åíèå = " & Result
Result = SendMessage(132798, TBM_GETPOS, 0, 0)
Print "Òåêóùåå çíà÷åíèå = " & Result
Next i
End Sub

Min, Max и текущее значение ползунка отрабатываются нормально, но при установке с помощью SendMassage нового значения - ползунок улетает в максинальную позицию. 132798 - это hWnd ползунка. Замените на свой
Причиной ошибок в коде служит давление со стороны руководства и жесткие временные рамки, им установленные.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.07.2007 (Ср) 12:27

ByRef lParam As Any
замени на
ByVal lParam As Long
Изображение

visualman
Бывалый
Бывалый
 
Сообщения: 228
Зарегистрирован: 08.02.2002 (Пт) 19:06
Откуда: Russia

Заработало!!! Огромное спасибо!!!

Сообщение visualman » 04.07.2007 (Ср) 12:30

Заработало!!! Огромное спасибо!!!
Причиной ошибок в коде служит давление со стороны руководства и жесткие временные рамки, им установленные.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 88

    TopList