Как увеличить размер часов в трэе?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Как увеличить размер часов в трэе?

Сообщение A.A.Z. » 10.10.2004 (Вс) 19:29

Сабж, собсна...
Ведь Chameleon Clock это как-то делает??
(ScreenShot)

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

Сообщение GSerg » 10.10.2004 (Вс) 19:48

Через Paint сохранял? :)

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

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 10.10.2004 (Вс) 20:03

Да :)

Хорошо, как "вместо" сделать? :roll:

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

Сообщение GSerg » 10.10.2004 (Вс) 20:34

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

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

Сообщение tyomitch » 10.10.2004 (Вс) 20:41

Таскбару-то как сказать, чтобы он "растянулся" и пустил меня внутрь?
А то ведь я все иконки в трее собой накрою, если он не растянется; некрасиво получится.
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 10.10.2004 (Вс) 21:02

Call SendMessage (Таскбар.ХВнд, "Растянись", CBoolean("Да!"))

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

Сообщение GSerg » 10.10.2004 (Вс) 21:54

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

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 10.10.2004 (Вс) 21:59

А, он не Optional, я забыл...

Тогда так:
Call SendMessage (Таскбар.ХВнд, "Растянись", CBoolean("Да!"), 0)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 20:26

GSerg писал(а):Бери Spy++, смотри структуру таскбара, делай выводы о том, куда пихать своё окно...
Наверное так :)
Ох... И почему мы не ищем легких путей?.. :)

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 11.10.2004 (Пн) 21:00

хде-то я видал прымеры как свое окно в трей засунуть...
там что-то было про ProgressBar в трее
вот:
Форма в Systray
ProgressBar в System Tray
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

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

Сообщение tyomitch » 11.10.2004 (Пн) 21:12

Оба примера перекрывают иконки в трее. Не круто :ncool:
Изображение

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 21:21

Почти то :)
В первом плохо, что добавляется слева, а не справа, а во втором - то, что значки перекрываются :)
Но все равно спасибо :)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 21:21

Я писал 11 минут :shock:

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 21:55

Чуток изменю вопрос:
Как можно поставить иконку в трэй не с краю слева, а справа (прямо перед часами)?

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

Сообщение GSerg » 11.10.2004 (Пн) 21:57

Есть только одна функция добавления иконок, и она этого не позволяет.
Хотя наверняка всё возможно :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 11.10.2004 (Пн) 22:02

AAZ, если хочешь пихать в трей свои иконки и перекрывать их - имей в виду, что другие проги тоже могут добавлять свои иконки, и тогда новые будут попадать под твоё окно.
Нужно что-то принципиально другое выдумать... Кто знает, как системные часы определяют, какого размера им быть? У меня исходников винды сейчас под рукой нет...
Изображение

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 22:02

2 GSerg
Ну вот, так всегда... Только соберусь что-нибудь интересное сделать, так облом :(

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 22:03

tyomitch писал(а):Кто знает, как системные часы определяют, какого размера им быть? У меня исходников винды сейчас под рукой нет...
Я пытался изменить шрифт и надпись часов (SetWindowText и WM_SETFONT) - ноль реакции... :(

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

Сообщение GSerg » 11.10.2004 (Пн) 22:04

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

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 22:05

Нет, ща попробую...

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

Сообщение tyomitch » 11.10.2004 (Пн) 22:10

Шпионом видно, что по SetWindowText заголовок действительно меняется.
Вместо InvalidateRect можно просто протащить другое окно над часами, чтобы увидеть, что это не поможет. Там рисуется не заголовок, а истинное время :-)
Придётся поднимать те исходники... :вздох:
Изображение

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 22:11

2 GSerg
Не, не катит :(

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 22:13

tyomitch писал(а):Придётся поднимать те исходники... :вздох:
Какие?

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

Сообщение GSerg » 11.10.2004 (Пн) 22:16

Виндовские, какие же ещё :)

А вот через setwindowpos размер часиков меняется... Правда, его контейнеру это совершенно пофигу :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.10.2004 (Пн) 22:19

в хр - нет... :(

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

Сообщение GSerg » 11.10.2004 (Пн) 22:19

А поскольку при изменении размера таскбара часики возвращаются на место...

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

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

Сообщение GSerg » 11.10.2004 (Пн) 22:20

В XP - да! Щас скрин приложу. И код :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 11.10.2004 (Пн) 22:22

GSerg писал(а):Виндовские, какие же ещё :)

А вот через setwindowpos размер часиков меняется... Правда, его контейнеру это совершенно пофигу :)

Нашёл. Надо сабклассить часики на
Код: Выделить всё
#define WM_CALCMINSIZE  (WM_USER + 100)

Параметров у сообщения нету, возвращается минимальный размер часов в виде POINTS (ширина в младшем слове, выстоа в старшем).

Как сабклассить чужой процесс на VB? :roll:
Изображение

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

Сообщение GSerg » 11.10.2004 (Пн) 22:23

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

Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SWP_NOACTIVATE As Long = &H10
Private Const SWP_NOCOPYBITS As Long = &H100
Private Const SWP_NOMOVE As Long = &H2
Private Const SWP_NOOWNERZORDER As Long = &H200
Private Const SWP_NOREDRAW As Long = &H8
Private Const SWP_NOZORDER As Long = &H4
Private Const SWP_SHOWWINDOW As Long = &H40

Private Sub Command1_Click()
  SetWindowPos &H3003E, 0, 0, 0, 15, 10, SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOOWNERZORDER Or SWP_NOZORDER
End Sub

hWnd свой подставь :)


Тут я часики уменьшаю...
Вложения
Безымянный.zip
Скрин уменьшенных часиков
(1.48 Кб) Скачиваний: 322
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение GSerg » 11.10.2004 (Пн) 22:24

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

След.

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

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

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

    TopList