USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Minimizar
Josefh Hennyere
Pontos: 2843
SALVADOR
BA - BRASIL
ENUNCIADA !
Postada em 15/05/2004 01:01 hs         
Como faço para que quando clicar no botão Minimize do form ele vire ícone no Tray e depois quando clicar no ícone do tray ele maximizar
   
Calel
SÃO VICENTE
SP - BRASIL
Postada em 15/05/2004 05:39 hs            
Você vai precisar criar um objeto Picture com a foto do icone que vai aparecer no Tray, chame-o de Picture1.
No Form_Activate do seu programa coloque o código:
Do
DoEvents
If Me.WindowState = 1 Then
    Load frmTray     'Esse aqui é o formulário onde tem que estar o Objeto Picture e nde vai estar a maior parte do código
    me.hide
    End if
Loop
 
'Coloque isso aqui num Módulo:
Public 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
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public t As NOTIFYICONDATA
 
No frmTray cole:
Private Sub Form_Load()
    t.cbSize = Len(t)
    t.hwnd = Picture1.hwnd
    t.uId = 1&
    t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    t.ucallbackMessage = WM_MOUSEMOVE
    t.hIcon = Picture1.Picture
    t.szTip = me.Caption & " ..." & Chr$(0)  'No lugar de me.caption coloque o nome do Programa
    Shell_NotifyIcon NIM_ADD, t
    Me.Hide
    App.TaskVisible = False
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    t.cbSize = Len(t)
    t.hwnd = Picture1.hwnd
    t.uId = 1&
    Shell_NotifyIcon NIM_DELETE, t
End Sub
 
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Hex(X) = "1E3C" Or Hex(X) = "1E0F" Then
        frmPrograma.show    'Aqui no lugar de frmPrograma vc coloca o nome do formulário do seu programa
        unload Tray
    End If
End Sub
Pronto, é isso, esse código é de outra pessoa, mas não me lembro o nome agora...
Dê uma lida no código antes de colocar no programa pra funcionar direitinho.
 
T+
 
Calel
     
Josefh Hennyere
Pontos: 2843
SALVADOR
BA - BRASIL
ENUNCIADA !
Postada em 15/05/2004 06:06 hs         
Começou bem, ao iniciar ele foi pro systray, só que quando cliquei no ícone do systray e abrir o form principal, ao minimizá-lo ele não voltou ao Tray.
   
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
Postada em 15/05/2004 14:41 hs         
Josefh para realizar esta operação acrescente o seguinte ao código
 
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  'this procedure receives the callbacks from the System Tray icon.
  Dim Result As Long
  Dim msg As Long
 
  'the value of X will vary depending upon the scalemode setting
  If Me.ScaleMode = vbPixels Then
    msg = X
  Else
    msg = X / Screen.TwipsPerPixelX
  End If
 
  Select Case msg
  Case WM_LBUTTONUP        '514 restore form window
    Me.WindowState = vbNormal
    Result = SetForegroundWindow(Me.hwnd)
    Me.Show
  Case WM_LBUTTONDBLCLK    '515 restore form window
    Me.WindowState = vbNormal
    Result = SetForegroundWindow(Me.hwnd)
    Me.Show
  Case WM_RBUTTONUP        '517 display popup menu
    Result = SetForegroundWindow(Me.hwnd)
    Me.PopupMenu Me.mPopupSys, , , , mPopRestore
  End Select
End Sub
'deve criar um menu nomeado mPopRestore
Private Sub mPopRestore_Click()
  'called when the user clicks the popup menu Restore command
  Me.WindowState = vbNormal
  SetForegroundWindow Me.hwnd
  Me.Show
End Sub
se esqueci alguma coisa post que terminaremos depois
     
Josefh Hennyere
Pontos: 2843
SALVADOR
BA - BRASIL
ENUNCIADA !
Postada em 15/05/2004 22:42 hs         
Sub ou função não definida SetForegroundWindow
   
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
Postada em 15/05/2004 22:50 hs         
é uma API declare e pronto e a proposito na seção dicas do forum tem um exemplo completo
 
Private Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
     
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página