Изменение формы у формы

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

Изменение формы у формы

Сообщение Kovu » 17.06.2005 (Пт) 9:18

Народ, помогите сделать форму в виде сердечка :D Я знаю что в шрифте Monotype Coursiva есть сердечко,, но я не знаю его код(так его можно увидеть набрав Alt+3 на цифровой клаве)
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение tyomitch » 17.06.2005 (Пт) 10:42

Код: Выделить всё
Option Explicit
Private Declare Function DrawWideChars Lib "user32.dll" Alias "DrawTextW" (ByVal hDC As Long, lpChar As Integer, ByVal nCount As Long, ByRef lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function BeginPath Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function EndPath Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function PathToRegion Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function SetWindowRgn Lib "user32.dll" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Const DT_NOCLIP = &H100

Private Sub Form_Load()
Dim rc As RECT
AutoRedraw = True
FontName = "Monotype Corsiva"
FontSize = 144
BeginPath hDC
DrawWideChars hDC, &H2665, 1, rc, DT_NOCLIP
EndPath hDC
SetWindowRgn hWnd, PathToRegion(hDC), False
End Sub
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 11:07

tyomitch
Спасибо что в очередной раз выручил, ГУРУ :)
Если всё делать своими ручками, они скоро отвалятся !

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 14:40

tyomitch
У меня возник логичный вопрос :
А как строку содержащую больше чем один знак таким образом написать :?: Ведь мы передаем функции 2 параметром не строку а число :(
Если всё делать своими ручками, они скоро отвалятся !

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.06.2005 (Пт) 16:24

ржунимагу! "форма в форме" сердечка! может еще элементы управления в форме звездочек, ангелочков и цветочков сделать? А!!!! ЛОЛ!
ХЎ

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 16:37

d3drm
Если мозгов понять для чего мне форма в виде сердечка не хватает не надо насмехаться :evil: :!: :!: :!:
Если всё делать своими ручками, они скоро отвалятся !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.06.2005 (Пт) 16:47

Дык Тёмыч - он хитрый :)
lpChar As Integer замени на byval s as string.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Павлуша
Не годный к строевой
Не годный к строевой
Аватара пользователя
 
Сообщения: 884
Зарегистрирован: 01.01.2005 (Сб) 19:31
Откуда: Смотря кто?

Сообщение Павлуша » 17.06.2005 (Пт) 16:47

Kovu
ты кончно извини, но скажи, какого ты пола? если Ж, то ладно, а если М - то тоже понятно - программу для девушки пишешь... LOL!!!
Пошли все на фиг, я фея! :flower:

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 17:41

Павлуша
Да я и не сильно обиделся :P
Если кто не знает-Kovu-сын Шрама из Lion King 2:Simba's Pride :D :D :D
Если всё делать своими ручками, они скоро отвалятся !

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 17:43

GSerg
Я имел ввиду чтоб и строка была и символы особые :D
Такие уж мы требовательные :) :) :)
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение tyomitch » 17.06.2005 (Пт) 20:10

GSerg писал(а):Дык Тёмыч - он хитрый :)
lpChar As Integer замени на byval s as string.

Не сработает ввиду того, что надо передавать Unicode-строку.

А мне нравится передавать массив Integer-ов:
Код: Выделить всё
Option Explicit
Private Declare Function DrawWideChars Lib "user32.dll" Alias "DrawTextW" (ByVal hDC As Long, lpChar As Integer, ByVal nCount As Long, ByRef lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function BeginPath Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function EndPath Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function PathToRegion Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function SetWindowRgn Lib "user32.dll" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Const DT_NOCLIP = &H100

Private Sub Form_Load()
Dim MyChars(4) As Integer
MyChars(0) = &HB7
MyChars(1) = &H42F
MyChars(2) = &H20
MyChars(3) = &H2665
MyChars(4) = &H222B

Dim rc As RECT
AutoRedraw = True
FontName = "Monotype Corsiva"
FontSize = 144
BeginPath hDC
DrawWideChars hDC, MyChars(0), 5, rc, DT_NOCLIP
EndPath hDC
SetWindowRgn hWnd, PathToRegion(hDC), False

Width = 9600
End Sub

Kovu, так подходит?
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 20:29

tyomitch
СПАСИБО
З.Ы.:А DrawTextW в 98 виндоусе есть (для просвещения :) :D :D :D
Если всё делать своими ручками, они скоро отвалятся !

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 20:36

SetWindowRgn hWnd, PathToRegion(hDC), False
Лучше True
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение tyomitch » 17.06.2005 (Пт) 21:00

1. Нету. Можно заменить его на TextOutW, который есть на всех платформах.
2. Чем лучше-то? В Form_Load никакой разницы всё равно нет.
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.06.2005 (Пт) 22:58

Да потому что во время отладки я ставлю бол-во событий на кнопку :)
А вообще огромное спасибо !!!!
Если всё делать своими ручками, они скоро отвалятся !

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 18.06.2005 (Сб) 18:43

tyomitch
А можно подсказать как заменить , т.к. попытка передать &H2665 показала большой красивый прямоугольник вместо сердечка :(
З.Ы.:А можно перевести свою подпись, латынь плохо знаю :D :D :D
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение tyomitch » 23.06.2005 (Чт) 21:03

Проверь - так должно работать.
Код: Выделить всё
Option Explicit
Private Declare Function WideCharsOut Lib "gdi32.dll" Alias "TextOutW" (ByVal hDC As Long, ByVal nXStart As Long, ByVal nYStart As Long, lpChar As Integer, ByVal nCount As Long) As Long
Private Declare Function BeginPath Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function EndPath Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function PathToRegion Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function SetWindowRgn Lib "user32.dll" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Const DT_NOCLIP = &H100

Private Sub Form_Load()
Dim MyChars(4) As Integer
MyChars(0) = &HB7
MyChars(1) = &H42F
MyChars(2) = &H20
MyChars(3) = &H2665
MyChars(4) = &H222B

AutoRedraw = True
FontName = "Monotype Corsiva"
FontSize = 144
BeginPath hDC
WideCharsOut hDC, 0, 0, MyChars(0), 5
EndPath hDC
SetWindowRgn hWnd, PathToRegion(hDC), False

Width = 9600
End Sub

Сорри, если тема уже потеряла актуальность.
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 24.06.2005 (Пт) 8:40

Спасибо ещё раз!!!
Выручил :D :D :D
Если всё делать своими ручками, они скоро отвалятся !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.06.2005 (Пт) 10:40

Предлагаю не страдать фигнёй с массивами, а объявить-таки как Long и передавать StrPtr :)
Ибо строки всё-таки :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 24.06.2005 (Пт) 12:03

GSerg, как ты вставишь такую строку в текст программы? VS6 же не может сохранять исходники в юникоде ;-)

Или будешь передавать StrPtr(ChrW(&HB7) & ChrW(&H42F) & ChrW(&H20) & ChrW(&H2665) & ChrW(&H222B)) :?: Так это ничуть не проще массивов :-D
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 24.06.2005 (Пт) 13:28

GSerg писал(а):Предлагаю не страдать фигнёй с массивами, а объявить-таки как Long и передавать StrPtr :)
Ибо строки всё-таки :)

А ты попробуй лонг объяви и посмотришь как виндоус весело закроет твою программу с ошибкой :twisted: :twisted: :twisted:
Если всё делать своими ручками, они скоро отвалятся !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.06.2005 (Пт) 15:42

Ну, объявил.
И чё?
Снова "Роль ByVal в истории"?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 24.06.2005 (Пт) 19:27

GSerg писал(а):Ну, объявил.
И чё?
Снова "Роль ByVal в истории"?

И чё и чё :P
Передай &H2665 и увидишь :D
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение tyomitch » 24.06.2005 (Пт) 20:05

Kovu, надо передавать ByVal StrPtr(ChrW(&HB7) & ChrW(&H42F) & ChrW(&H20) & ChrW(&H2665) & ChrW(&H222B))
Только вот нафига это тебе, никак не пойму? :-|
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 25.06.2005 (Сб) 14:04

tyomitch писал(а):Kovu, надо передавать ByVal StrPtr(ChrW(&HB7) & ChrW(&H42F) & ChrW(&H20) & ChrW(&H2665) & ChrW(&H222B))
Только вот нафига это тебе, никак не пойму? :-|

Тёмыч я сообщения все читаю мне твой способ большн нравится конечно :D :D :D
Просто я показал что функция с лонг может выдать ошибку а с интегером никогда :wink:
Если всё делать своими ручками, они скоро отвалятся !

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 02.12.2005 (Пт) 20:05

up

А почему качество у этиx самых регионов просто ужасает?
У меня к примеру вааще какие левые пикселы есть, а каких то наоборот нет, хотя должы быть....

:?:
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

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

Сообщение tyomitch » 02.12.2005 (Пт) 20:15

шрифт трутайпный?
Изображение

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 02.12.2005 (Пт) 20:26

Arial
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 02.12.2005 (Пт) 20:56

Так а что мне теперь делать-то?
Мне нужно Ариалом хоть со стула упади!
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 02.12.2005 (Пт) 21:55

А другого способа нет?
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

След.

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

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

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

    TopList