Автор вопроса: Боцман | Web-сайт:Rus-Skipper.narod.ru | ICQ: 295725312
Тут недельку назад я дал не дописанные исходники этой проги. http://www.vbnet.ru/forum/show.aspx?id=137902&page=3
И вот решил дописать, что получилось, смотрите здесь
http://rus-skipper.narod.ru/raznoe/ALT_X.zip
На бета тестирование народ мало ходит вот и выложил здесь, может, кто чего подскажет доделать,
а то сам я уже, как бы и так доволен пока, но какие то смутные сомнения есть, а в чем сам не пойму.
Да и разговоров сегодня на форуме мало, почему бы прогу не посмотреть, а?
Может, как говорится, будем жениться, все пригодится
О программе : Панель быстрого запуска.
1. Работает из папки.
2.Минимум настроек, но широкие возможности (Вот загнул).
3.Поддержка до 10 скинов.
4.Память жрет меньше, чем та, что стоит еще пока у меня.
5.Нет ни одного таймера, полная демократия, где оставил и (на какой группе), там и запустится.
6, Размер ZIP 76КБ
7. Оставит из мусора только папку в реестре с десятком ключей о настройки самой проги.
Адрес: HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ALT_X _Rus-Skipper + имя пользователя.
Все остальное в папке с программой.
Думаю вот добавить ли кнопку, удалить все следы пребывания на компе, или так оставить?
Да ALT-X это чтобы вытащить на перед, если запущено много других программ, а прога не поверх всех назначена.
.Первый запуск, чуть длиннее из-за создания каталогов в папке проги.
Я просто граблю иконки из shell32.DLL, зато теперь окно, выбор иконки, более просторное, да и свои кому охота может добавлять, в папку Ikon.
К стати если кому интересно вот код вызова стандартного окна.
Private Declare Function PickIconDlg Lib "shell32" ( _
ByVal hwnd As Long, _
ByRef pszIconPath As String, _
ByVal cchIconPath As Long, _
ByRef piIconIndex As Long _
) As Long
Private Sub Command1_Click()
Dim iconIndex As Long
iconIndex = 13’Это какую при пуске выделить, по номеру если надо
Call PickIconDlg(Me.hwnd, vbNullString, 0, iconIndex)
Print iconIndex’ а это имя значка путь ведь и так известен
End Sub
1) имхо стандартные батаны мастдай, сделай вместо них имеджи - получится что можно будет делать кнопки произвольной формы и прозрачные в некоторых местах. Идею обмозговать конечно нужно, но это уже тебе
2) эээ.. ну копку добавил, хотя только после того как прочитал справку Но как теперь её удалить? (та кнопку а не справку! ) )
имхо в менюшке нужны пункты "Добавить кнопку" и "Удалить кнопку"
3) Какая ж это панель быстрого запуска? Это ОКНО быстрого запуска ) Где прилипания к краям, где вид "безбардюрный" ?
4) Чё оно при изминении размера окна мерцает всё? Имхо сабклассингом нужно делать, а не тупо в From_Resize условий натыкать
Ну ладно, пока хватит, а то я могу ещё спросить про поддержку плагинов, мож гаджетов гы )
Если интересно, то вот наброски панельки на NET, на форму кинуть пикчербокс с именем PB и таймер с именем Tim:
Public Class Form1
Dim a
Dim scrRect, actRect As Rectangle
Dim defColor As Color
Dim InRect As Boolean = False
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
scrRect = My.Computer.Screen.WorkingArea
scrRect.X = scrRect.Width - 80
With actRect
.X = scrRect.Width - 1
.Y = scrRect.Height / 2 - 80
.Width = 1
.Height = 160
End With
Me.Size = scrRect.Size
Me.Location = scrRect.Location
Me.Width = 80
Me.Opacity = 0
'Debug.Print("Loaded"
defColor = Color.FromArgb(60, Color.White)
PB.Width = 70
PB.Height = 70
PB.Left = 5
PB.Top = 12
Tim.Interval = 100
Tim.Enabled = True
End Sub
Private Sub Tim_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tim.Tick
If Not InRect Then
If actRect.Contains(Control.MousePosition) Then
InRect = True
'Debug.Print("Comtain"
'Tim.Enabled = False
For a = 0 To 1 Step 0.02
Me.Opacity = a
Me.Left = (scrRect.X + 80) - a * 80
Me.Refresh()
Next
'Me.Visible = True
End If
Else
If Not scrRect.Contains(Control.MousePosition) Then
InRect = False
'Debug.Print("Comtain"
'Tim.Enabled = False
For a = 1 To 0 Step -0.07
Me.Opacity = a
Me.Left = scrRect.X + (80 - a * 80)
'Me.Left = (scrRect.X - 80) + a * 80
Me.Refresh()
Next
'Me.Visible = False
End If
End If
'Debug.Print("Tick"
End Sub
Private Sub PB_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PB.MouseDown
PB.BorderStyle = BorderStyle.Fixed3D
End Sub
Private Sub PB_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles PB.MouseEnter
PB.BackColor = defColor
End Sub
Private Sub PB_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PB.MouseLeave
PB.BackColor = Color.Transparent
End Sub
Private Sub PB_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PB.MouseUp
PB.BorderStyle = BorderStyle.None
End Sub
Но как теперь её удалить? та кнопку а не справку! ) Вообще то есть пункт очистить кнопку.
Насчет дизайна, каких по началу у меня не было и кубик рубика и типа комнаты с книжными шкафами,
Ходишь и выбираешь нужную книгу. ВСе надоедает и остановился на TurboLaunch. функциональна, а это главное. И так привык, что решил сделать копию, но по своему. В 10 раз меньше по размеру файла, возможность изменять окно в реальном времени, отсутствие прилипаемости к краям, мне удобнее иногда ее просто почти полностью задвинуть за экран. Возможности оставил с запасом, до 10 групп до 30 файлов в каждой. Насчет мерцания разберусь.
ObjectDock от ViS_ты, весит 12 метров куда мне до него? avdey с NET не дружу, может как нибудь попробую.
Интерестно ObjectDock тоже 300 программ потянет, и как это будет выглядеть? Это вопрос из любопытства всего лишь.
К стати увеличение рисунка при наведении возможно, просто нужно кое что переписать, дело в том , что это рисунок самой кнопки, а не PictureBox_са, их на форме всего два, не считая 5 скинов.
Ребята если кто то хочет подучить, или просто так посмотреть, исходник вышлю.Здесь не надо афишировать, просто стукните на мыло "ВЫШЛИ" и все. Кто подучит огромное СПАСИБО, а то я как глухонемой в коморке здесь сижу, не посоветоватся, не поговорить, об этом не скем.