Снова ТРЕЙ

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

Снова ТРЕЙ

Сообщение Akella » 31.01.2005 (Пн) 12:37

Привет бртья по форуму ну и по разуму значит. А теперь серёзно. :wink: КАК запихать свою прогу в трей, НЕ ИКОНКУ ПРОГИ, А чтобы она показывала (Язык, FPS, ...). :shock:
Не бойся что не знаешь, бойся что не учишься.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 31.01.2005 (Пн) 12:44

Akella писал(а):Привет бртья по форуму ну и по разуму значит. А теперь серёзно. :wink: КАК запихать свою прогу в трей, НЕ ИКОНКУ ПРОГИ, А чтобы она показывала (Язык, FPS, ...). :shock:
Ето как это так? Где показывала? В трее? Ну если я рпавельно понял, то надо взять какаю нибудь иконку и в рантайме рисовать на ней все что надо, и потом пихать её в трей!
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 31.01.2005 (Пн) 12:48

надо , так типа виндовая язуковая панель
Не бойся что не знаешь, бойся что не учишься.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 31.01.2005 (Пн) 12:50

тоже самое
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 31.01.2005 (Пн) 13:01

Насколько я понял ему надо форму в трй засунуть.

Это к A.A.Z он долго с этим мучился, и поиском по форуму

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

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

Не, это не ко мне, он не хочет форму в трэй запихивать :)
Вот, держи:
Код: Выделить всё
'Предполагается, что на диске С: имеются файлы RUSSIAN.ICO и ENGLISH.ICO с русской и английской иконками соответственно.

Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type

Private Const NIF_MESSAGE As Long = &H1
Private Const NIF_ICON As Long = &H2
Private Const NIF_TIP As Long = &H4
Private Const NIM_ADD As Long = &H0
Private Const NIM_MODIFY As Long = &H1
Private Const NIM_DELETE  As Long = &H2
Private Const WM_RBUTTONDOWN As Long = &H204
Private Const WM_NULL As Long = &H0
Private Const KL_NAMELENGTH As Long = &H9

Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long

Private NID As NOTIFYICONDATA, m_hWnd&, m_Icon&, m_ToolTipText$, Language As Boolean
Private WithEvents Timer1 As Timer

Private Sub Add(ByVal hWnd&, ByVal Icon&, ByVal Tip$)
Dim ret&
NID.uID = hWnd
NID.hWnd = hWnd
NID.hIcon = Icon
NID.szTip = Left(Tip, 63) & Chr(0)
NID.uFlags = NIF_TIP Or NIF_ICON
NID.cbSize = Len(NID)
ret = Shell_NotifyIcon(NIM_ADD, NID)
End Sub

Private Sub Delete(ByVal hWnd&)
Dim ret&
NID.uID = hWnd
NID.hWnd = hWnd
NID.cbSize = Len(NID)
ret = Shell_NotifyIcon(NIM_DELETE, NID)
End Sub

Private Sub Change(ByVal hWnd&, ByVal Icon&, ByVal Tip$)
Dim ret&
NID.uID = hWnd
NID.hWnd = hWnd
NID.hIcon = Icon
NID.szTip = Left(Tip, 63) & Chr(0)
NID.uFlags = NIF_TIP Or NIF_ICON
NID.cbSize = Len(NID)
ret = Shell_NotifyIcon(NIM_MODIFY, NID)
End Sub

Private Function GetKBLayout() As Boolean
Dim str$
str = String(KL_NAMELENGTH, 0)
GetKeyboardLayoutName str
If Val(str) = 409 Then GetKBLayout = False Else GetKBLayout = True
End Function

Private Sub Form_Load()
Set Timer1 = Me.Controls.Add("VB.Timer", "Timer1")
Timer1.Interval = 1
Timer1.Enabled = True
Add Me.hWnd, LoadPicture(IIf(GetKBLayout, "C:\RUSSIAN.ICO", "C:\ENGLISH.ICO")), IIf(Language, "Russian", "English")
End Sub

Private Sub Form_Unload(Cancel%)
Delete Me.hWnd
End Sub

Private Sub Timer1_Timer()
If Not (GetKBLayout And Language) Then
Language = GetKBLayout
Change Me.hWnd, LoadPicture(IIf(Language, "C:\RUSSIAN.ICO", "C:\ENGLISH.ICO")), IIf(Language, "Russian", "English")
End If
End Sub

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 10:12

A.A.Z. писал(а):Не, это не ко мне, он не хочет форму в трэй запихивать :)


Ну помог ему все равно ты, значит к тебе :D

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 03.02.2005 (Чт) 8:12

Наверно мне надо именно форму в трей, ибо надо поместить туда счетчик 0~200,300.
Не бойся что не знаешь, бойся что не учишься.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.02.2005 (Чт) 11:05

A.A.Z. писал(а):Не, это не ко мне, он не хочет форму в трэй запихивать :)


ГЫ всет таки надо, и все равно к тебе :lol:

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

Сообщение Amed » 03.02.2005 (Чт) 11:09

Akella писал(а):Наверно мне надо именно форму в трей, ибо надо поместить туда счетчик 0~200,300.


Не-а... В таком случае надо генерировать иконки. С формой будет море проблем...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.02.2005 (Чт) 11:15

Amed писал(а):
Akella писал(а):Наверно мне надо именно форму в трей, ибо надо поместить туда счетчик 0~200,300.


Не-а... В таком случае надо генерировать иконки. С формой будет море проблем...


Это ж сколько иконок надо генерировать :shock:

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

Сообщение Amed » 03.02.2005 (Чт) 11:17

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

Если я правильно понял и автору нужны относительно простые, единообразные иконки (цифры 0-9, буквы А-Я (A-Z)), которые можно легко нарисовать простым алгоритмом.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.02.2005 (Чт) 13:11

Может скажешь что это за алгоритм такой, а то я не знаю :oops:

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 03.02.2005 (Чт) 14:47

внатуре Amed ЕТО ЧТО за такой алгоритм. постоянно картинки делать?
Не бойся что не знаешь, бойся что не учишься.

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

Сообщение Amed » 03.02.2005 (Чт) 16:41

Всё примитивно просто, пишу сразу примерный порядок действий:

а) рисуем во временном picturebox'е (32х32 или 16х16) всё, что нужно (скажем, fps):
Код: Выделить всё
picTemp.Print fps


б) сохраняем файл картинки в иконку:
Код: Выделить всё
picTemp.picture=picTemp.image
SavePicture picTemp.Picture, "C:\tmp.ico"
'ещё нужно поменять в выходном файле 2 первых байта, кажется (savepicture сохраняет в bmp, а ico от bmp отличается первыми 2 байтами, см. форум)


в) пользуем код A.A.Z.

Что ещё надо-то? Где проблемы?

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.02.2005 (Чт) 16:52

Amed писал(а):а ico от bmp отличается первыми 2 байтами, см. форум)
Что ещё надо-то? Где проблемы?


Форум большой где именно смотреть?

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

Сообщение Amed » 03.02.2005 (Чт) 17:00

Тут

А для тех, кому лень искать самому :evil: , всё тут:
а) http://bbs.vbstreets.ru/viewtopic.php?t=9376
б) http://vbrussian.com/Examples.asp?ID=99

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

Сообщение A.A.Z. » 03.02.2005 (Чт) 18:10

2 Amed: в ICO есть прозрачность :)
ЗЫ А вот вторая ссылка - что надо... :roll:

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

Сообщение Amed » 03.02.2005 (Чт) 18:17

A.A.Z., ну да, я знаю, плавал ;)

Даже в первой ссылке в посте Тёмыча чёрным по белому написано:
tyomitch писал(а):Совершенно точно нет - в ICO есть ещё и маска.


Кстати, ведь можно и без маски прозрачности ico сделать, ничего особенно плохого не произойдёт. Максимум - будет некрасиво, нет? ;)

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

Сообщение A.A.Z. » 03.02.2005 (Чт) 18:18

Дык этот максимум все и портит :)

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

Сообщение Amed » 03.02.2005 (Чт) 18:20

:D
Ну, значит, роемся в корзине с грязным бельём в поисках формата ico. Или смотрим сцылку №2 (только для профессионалов) ;)

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

Сообщение A.A.Z. » 03.02.2005 (Чт) 18:22

Наоборот, грязное белье - для профов, а остальное - для остальных :wink:

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

Сообщение tyomitch » 04.02.2005 (Пт) 19:28

Эй, кому объяснить формат .ico? :lol:
Всё тут - ftp://cs.usu.edu.ru/util/IcoCur/prjIcoCur.txt
Пример (там, правда, просмотр, но разница небольшая) - ftp://cs.usu.edu.ru/util/IcoCur/
Изображение


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

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

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

    TopList