Текст на ProgressBar'e

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Текст на ProgressBar'e

Сообщение JumpingJack » 05.06.2006 (Пн) 15:27

Всем привет!
Хочу написать текст на прогрессбаре, делаю так, но не работает.. в чем может быть дело?

Код: Выделить всё
Const DT_CENTER = &H1

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long

Private Sub Form_Paint()
    Dim R As RECT
    Dim hdc As Long
    Dim hWnd As Long
   
    SetRect R, pb.Left / Screen.TwipsPerPixelX, _
            pb.Top / Screen.TwipsPerPixelY, _
            pb.Width / Screen.TwipsPerPixelX, _
            pb.Height / Screen.TwipsPerPixelY
   
    hWnd = pb.hWnd
    hdc = GetDC(hWnd)
   
    DrawText hdc, "Test !", Len("Test !"), R, DT_CENTER
End Sub

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 05.06.2006 (Пн) 15:46

Если не ошибаюсь, то все параметры в структуре RECT задаются от верхнего левого угла DC, а не экрана... т. е. верхний девый угол-(0,0)
Изображение

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 05.06.2006 (Пн) 15:50

Так тоже не помогает..

Код: Выделить всё
SetRect R, 0, 0, _
            pb.Width / Screen.TwipsPerPixelX, _
            pb.Height / Screen.TwipsPerPixelY

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 05.06.2006 (Пн) 15:51

Итого:
Код: Выделить всё

Option Explicit
Const DT_CENTER = &H1
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Sub Form_Click()
    Me.ScaleMode = 3
    Dim R As RECT
    Dim hdc As Long
    Dim hWnd As Long
    R.Right = pb.Width
    R.Bottom = pb.Height
   
    hWnd = pb.hWnd
    hdc = GetDC(hWnd)
   
    DrawText hdc, "Test !", Len("Test !"), R, DT_CENTER
End Sub


З. Ы. В Form_Paint не работает, ибо прогрессбар рисуется отдельно.
Изображение

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 05.06.2006 (Пн) 15:55

Огромное спасибо! :)


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

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

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

    TopList