Заголовок формы на кнопке в панели задач

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Заголовок формы на кнопке в панели задач

Сообщение timsoft » 09.09.2004 (Чт) 16:47

Можно ли не имея заголовка на самой форме добиться того, что-бы на кнопке в панели задач все-таки было написано название проги?

у меня получается так сделать, только если BorderStyle стоит None
Но хотелось бы сотворить такое с типом Sizable...

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 09.09.2004 (Чт) 16:48

А в свойстве формы ShowInTaskBar что прописано?

А вообще - тебе сюда (мой топик, по схожей проблеме). Если уж не найдешь там решения... Значит, скорее всего не судьба 8)
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 09.09.2004 (Чт) 16:52

ZlydenGL писал(а):А в свойстве формы ShowInTaskBar что прописано?


прописано ессно True, кнопка на панели есть но без названия
как только добавляю form.caption = "блаблабла" тут же на форме вылазит сам заголовок, а он мне не нужен :(

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.09.2004 (Чт) 16:52

True естественно.

Тебе нужно, чтобы в Caption было одно, а на кнопке другое? Или ты хочешь, чтобы у тебя окно было с рамкой и без заголовка?
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 09.09.2004 (Чт) 17:19

alibek писал(а):True естественно.

Тебе нужно, чтобы в Caption было одно, а на кнопке другое? Или ты хочешь, чтобы у тебя окно было с рамкой и без заголовка?


мне нужно окно с рамкой без заголовка (все кнопки minimize, maximize и т.д. я рисую свои типа скина), но при этом хочу чтоб на кнопке в панели задач вылазило название проги :D

см. скриншот
:roll:

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 09.09.2004 (Чт) 17:28

Понял!!! Тебе на App.Title!!! Вроде бы должно помочь...

Мужики, мне уже никто не поможет? :oops: Я про свой топик, естессно...
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 09.09.2004 (Чт) 17:32

ZlydenGL писал(а):Понял!!! Тебе на App.Title!!! Вроде бы должно помочь...


да не, app.title = "Project1"
он нигде ведь на экране не появляется, кроме как в заголовках MsgBox по дефолту...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.09.2004 (Чт) 17:36

Завтра надо будет подумать.
Пока два варианта:
1. Создать невидимое окно с требуемым Caption; оно будет использоваться для текста на кнопки. Окно даже может быть видимым, в этом случае оно будет физически заголовком окна.
2. Выводить обычное окно с заголовком, но рисовать его самому (OwnerDraw).
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение GSerg » 09.09.2004 (Чт) 22:05

Щас я вам сказочку расскажу, про то, как не нужно забывать про простые решения :)

Полез я сначала в сабклассинг. Обрабатываю WM_GETTEXT и WM_GETTEXTLENGTH, всё красиво, всё прекрасно, защита от переполнения буфера (начитался-таки Книжек всяких :wink:), только вот не работает. Долго читал MSDN. Долго думал. Долго страдал фигнёй (всё в сторону сабклассинга). Только потом допёрло (вернее, еле откопал в MSDN): если из своего же треда вызывается GetWindowText, то это эквивалентно прямому посылу WM_GETTEXT, и сабклассинг сработает. Если же GetWindowText вызывается из другого треда, то она напрямую берёт это дело из структуры окна. А таскменеджер как раз из другого треда.

Вывод:
Код: Выделить всё
Option Explicit

Private Declare Function SetWindowText Lib "user32.dll" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Private Sub Form_DblClick()
  Unload Me
End Sub

Private Sub Form_Load()
  SetWindowText Me.hwnd, "Мой мегазаголовок"
End Sub


Да, я тоже долго смеялся :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 09.09.2004 (Чт) 23:44

GSerg писал(а):Щас я вам сказочку расскажу, про то, как не нужно забывать про простые решения :)

Полез я сначала в сабклассинг. Обрабатываю WM_GETTEXT и ======= Сгрызено моей собакой =========
таскменеджер как раз из другого треда.

Вывод:
Код: Выделить всё
Option Explicit

Private Declare Function SetWindowText Lib "user32.dll" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Private Sub Form_DblClick()
  Unload Me
End Sub

Private Sub Form_Load()
  SetWindowText Me.hwnd, "Мой мегазаголовок"
End Sub


Да, я тоже долго смеялся :)

Супер!!! Всё гениальное просто!!! :D
Возьму код на заметку.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.09.2004 (Пт) 10:13

GSerg, ну вот, только-только tyomitch с Approximator собрались заняться творчеством, как пришел Шаман и все опошлил ;)
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 10.09.2004 (Пт) 10:40

GSerg писал(а):Щас я вам сказочку расскажу, про то, как не нужно забывать про простые решения :)


Афигеть! :oops:

Спасибо огромное!!!! Работаеть, итить ее тудыть!!!!

Спасибо всем!

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

Сообщение GSerg » 10.09.2004 (Пт) 18:03

:D
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList