Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: FreddyJ en Noviembre 30, 2010, 03:01:44 pm
-
Quisiera saber si alguien tiene lo que está en el escritorio de Windows Vista.
En este caso esta en la parte de arriba, pero se puede colocar en cualquier parte del escritorio.
Vease en la imagen:
(http://1.bp.blogspot.com/_cPineXQN60g/SISUiSnpqkI/AAAAAAAABsY/NQE01ED8oS8/s400/iconos+escritorio.jpg)
-
Eso es dockear un formulario a un borde de la pantalla.
Que es lo que precisas hacer? Dockear un formulario? hacer que se oculte/muestre ? ....
-
Si, Bueno que tome esa forma cuando se seleccione algo del menú. Que se oculte y muestre, eso no lo hace en vista.
Quiero hacer como un menu fijo, donde estan 5 opciones y al momento de seleccionar una que se agrande la imagen y vuelva a su normalidad.
-
con el ucImage y ucImageList (http://www.leandroascierto.com.ar/categoria/Controles%20de%20Usuario/articulo/ucImage%20y%20ucImageList.php) biene uno simulando una ToolBar que hace precisamente eso.
Ahora tu encargate de personalizarlo, dockearlo y que se muestre y oculte solo :)
-
Ok Leandro. Pero hacer que tome la posición en forma de curva, el ejemplo que me acabas de dar me soluciona mucho. Gracias de nate mano.
-
Forma de curva? No entiendo, podrias explicarte mejor? (no tengo la barrita esa yo, no me gusta XD)
-
mirate este link es lo que vos buscas
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=55352&lngWId=1
pero bueno para modificarlo tenes que tener conosimientos sobre las apis que utiliza.
Saludos.
-
Mira este ejemplo:
Private Declare Function ExtraerIconoLib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String,ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long,ByVal nIcons As Long) As Long
Private Declare Function DibujarIconoLib "user32" Alias "DrawIconEx" (ByVal hdc As Long, ByVal xLeft AsLong, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long,ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByValhbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function EliminarIcono Lib "user32" Alias "DestroyIcon" (ByVal hIcon As Long) As Long
Private Type MenuItem
X As Long
Y As Long
Width As Long
Height As Long
End Type
Private DMenu(4) As MenuItem
Private Sub Form_Load()
Me.AutoRedraw = True
Me.ScaleMode = vbPixels
End Sub
Private Sub Form_LostFocus()
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Distancia As Long
Dim Top As Long
Dim TamMin As Long
Dim TamMax As Long
Dim DisActuar As Long
Dim CX As Long
Dim CY As Long
Dim I As Long
Dim Espaciado As Long
Dim tLeftMin As Long
Dim Icono As Long
Dim nWidth As Long
Espaciado = 10
Top = 80
TamMax = 96
TamMin = 36
DisActuar = 122
'tLeftMin = (Me.ScaleWidth - ((TamMin + Espaciado) * (UBound(DMenu)))) / 2
Cls
For I = LBound(DMenu) To UBound(DMenu)
With DMenu(I)
CY = .Y + .Height / 2
CX = .X + .Width / 2
Distancia = Sqr((X - CX) ^ 2 + (Y - CY) ^ 2)
If Distancia <= DisActuar Then 'si la distancia es menor o igual a lo minimo
.Width = TamMin + (DisActuar - Distancia) * (TamMax - TamMin) / DisActuar
.Height = .Width
.Y = Top - .Height / 2
Else
.Width = TamMin
.Height = TamMin
.Y = Top - .Height / 2
End If
If I > LBound(DMenu) Then
.X = DMenu(I - 1).X + DMenu(I - 1).Width + Espaciado
Else
.X = tLeftMin - .Width / 2
End If
'Call ExtraerIcono("shell32.dll", I, Icono, ByVal 0&, 1)
'Call DibujarIcono(Me.hdc, .X, .Y, Icono, .Width, .Height, 0, 0, &H3)
'Call EliminarIcono(Icono)
End With
Next
nWidth = (DMenu(UBound(DMenu)).X + DMenu(UBound(DMenu)).Width) - DMenu(LBound(DMenu)).X
tLeftMin = (Me.ScaleWidth - nWidth) / 2
For I = LBound(DMenu) To UBound(DMenu)
With DMenu(I)
If I > LBound(DMenu) Then
.X = DMenu(I - 1).X + DMenu(I - 1).Width + Espaciado
Else
.X = tLeftMin
End If
Call ExtraerIcono("shell32.dll", I + 22, Icono, ByVal 0&, 1)
Call DibujarIcono(Me.hdc, .X, .Y, Icono, .Width, .Height, 0, 0, &H3)
Call EliminarIcono(Icono)
End With
Next
Me.Refresh
End Sub
'on progress
'Private Function IsItemHover(Item As MenuItem, X As Long, Y As Long) As Boolean
'With Item
' If X >= .X And .X + .Width >= X And .Y <= Y And .Y + .Height >= Y Then
'' IsItemHover = True
' End If
'End With
'End Function
-
Si te sirve de algo tambien hay programa que funciona para windows xp
rocketdock.com (http://rocketdock.com)
-
Yo use ese por referencia y arme uno...! Ese ejemplo de Leandro es el mas acertado, aunque se puede mejorar muchisimo...!
-
Qué Api exactamente es la que se encarga de dar esa forma, con respecto al ejemplo de Miguel y Leandro.?