Надеюсь, я не сидьно надоел, но вопрос на размышление:-)

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

Надеюсь, я не сидьно надоел, но вопрос на размышление:-)

Сообщение Matew » 15.09.2004 (Ср) 15:07

Мне надо сделать линейку по краям формы, которая показывает положение курсора, как в кореле (или в ворде). На ней дожны быть и цифры, и масштаб она должна менять, и положение курсора какойнить значек(или линия) должен отслеживать. Я вот ума не приложу из каких контролов можно собрать такую линейку?

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

Сообщение tyomitch » 15.09.2004 (Ср) 15:16

дык, самому рисовать Line-ом...
зачем тут контролы?
Изображение

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 15.09.2004 (Ср) 15:30

А как цифорки на определенном расстоянии друг-от-друга расставлять при изменении масштаба?
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 15.09.2004 (Ср) 15:49

дык расставляй лейбелы как те нада!

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 15.09.2004 (Ср) 15:52

Лана сделаем, спасибо!
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 15.09.2004 (Ср) 16:09

Отставить, расставлять лейблы! Надо рисовать через API функции, и цифры и линии. Такие вещи в ручную не делаются (расставлением контролов).
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 15.09.2004 (Ср) 16:19

Ну тогда хоть перечислите апи-функции, которые можно использовать.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

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

Сообщение tyomitch » 15.09.2004 (Ср) 17:02

gaidar, зачем API?
Line, Print - и все дела.

Matew, если слишком много свободного времени - тогда DrawText и CreatePen/SelectObject/MoveToEx/LineTo
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 15.09.2004 (Ср) 17:14

2tyomitch: И еще DeleteObject, не забудь. В паре с CreatePen.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение tyomitch » 15.09.2004 (Ср) 17:49

ANDLL, это не я, это Matew должен не забыть...
Изображение

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 15.09.2004 (Ср) 19:14

Здравствуйте!
увидел тут у вас интересные апишки и решил над десктопом извратиться: хочу написать текст... но появилась проблема - текта не видно, хотя функция drawtext возвращает ненулевое значение (16)
вот код:
Код: Выделить всё
//декларации//

Dim R As RECT
Private Sub Command1_Click()
    dtHwnd = GetDesktopWindow
    dthDc = GetDC(dtHwnd)

    hRPen = CreatePen(PS_SOLID, 5, vbBlue)
    DeleteObject SelectObject(dthDc, hRPen)

    SetRect R, 500, 500, 1000, 600
    a = DrawText(dthDc, "Hello World !", Len("Hello World !"), R, DT_CENTER)
   
    DeleteObject hRPen
End Sub



воть... и не работает... скажите, в чём косяк?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 15.09.2004 (Ср) 19:24

Попробуй GetDC(0)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение tyomitch » 15.09.2004 (Ср) 19:26

во-первых, ReleaseDC надо не забывать...
во-вторых, удалять чужое перо крайне невежливо...
в-третьих, текст всё равно рисуется не пером, а текущим цветом (SetTextColor; его потом надо будет вернуть обратно).

ANDLL: разницы между GetDC(0) и GetDC(dthWnd) нет никакой, разве что второе чуть быстрее.
Последний раз редактировалось tyomitch 15.09.2004 (Ср) 19:27, всего редактировалось 1 раз.
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 15.09.2004 (Ср) 19:27

Кстати! А какое у тебя оазрешение экрана? Часом не 1500 * 1200? Уж больно много. Параметры указываеться в пикселях а не в твипах. И еще: есть функция TextOut. Тоже аналог. И еще надо вызвать ReleaseDc. и вообще, запоминать, что возвращает SelectOPbject, и в конце действия устанавливать возвращенный объект, а уж потом удалять свой.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 15.09.2004 (Ср) 19:38

ANDLL писал(а):Кстати! А какое у тебя оазрешение экрана? Часом не 1500 * 1200? Уж больно много. Параметры указываеться в пикселях а не в твипах. И еще: есть функция TextOut. Тоже аналог. И еще надо вызвать ReleaseDc. и вообще, запоминать, что возвращает SelectOPbject, и в конце действия устанавливать возвращенный объект, а уж потом удалять свой.


извини, что-то не понял зачем запоминать результат selectobject
и как и куда устанавливать возвращённый объект?

можно кусочек кода плииз?

------------------------------

всем спасибо! уже разобрался :)
прост вместо GetDc надо использовать getWindowDc :roll:

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 15.09.2004 (Ср) 20:10

Код: Выделить всё
hOldPen=SelectObject(hDC,hPen)
...
SelectObject hDC,hOldPen
DeletObject hPen

Вот так. Когда ты меняешь какой-то gdi-объект его всегда нужно возвращать на место.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 16.09.2004 (Чт) 8:20

А я нарисовал линейку Лайнами и TextOut-ом, очень симпатично получилось)))
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

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

Сообщение tyomitch » 16.09.2004 (Чт) 8:26

Па-здра-вля-ем!!
:-) :cheers:
Изображение


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 2

    TopList