Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Aiuto con API

  1. #1
    Utente di HTML.it L'avatar di fungo
    Registrato dal
    Jul 2000
    residenza
    Caorle
    Messaggi
    725

    Aiuto con API

    Scusate se apro un'altro theread, ma ho trovato il codice dell'API che ho bisogno ma non ottengo quello che volgio.


    Voglio disabilitare l'iconcina ripristina in basso tramite le API, l'applicazione che stò sviluppando usa una finestra MDI.

    La funzione dell'API e questà

    NEL MODULO:

    Private Declare Function GetSystemMenu Lib "user32" _
    (ByVal hwnd As Long, ByVal bRevert As Long) As Long

    Private Declare Function RemoveMenu Lib "user32" _
    (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

    Public Const MF_BYPOSITION = &H400&

    Public Function removeXmenu(frm As Form)

    Dim hMenu As Long
    hMenu = GetSystemMenu(frm.hwnd, 0)
    removeXmenu = RemoveMenu(s, 6, MF_BYPOSITION)

    End Function


    NEL MDIFORM_LOAD:


    Dim retVal As Long
    retVal = removeXmenu(Me)


    Qualcuno a qualche suggerimento?


    Grazie
    Mungo Mauro

  2. #2

    Re: Aiuto con API

    ma sei proprio pippa!:green:

    Originariamente inviato da fungo
    Public Function removeXmenu(frm As Form)
    Dim hMenu As Long
    hMenu = GetSystemMenu(frm.hwnd, 0)
    removeXmenu = RemoveMenu(s, 6, MF_BYPOSITION)
    End Function
    non è forse ke hai sbagliato a scrivere?
    anzikè della s, non dovresti mettere hMenu?

    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

  3. #3
    Utente di HTML.it L'avatar di fungo
    Registrato dal
    Jul 2000
    residenza
    Caorle
    Messaggi
    725

    RE

    Grazie, funziona :sgrat:

    Ma io voglio eliminare l'iconcina ripristina in basso

    ho provato cosi:

    Dim hMenu As Long
    hMenu = GetSystemMenu(frm.hwnd, 0)
    removeXmenu = RemoveMenu(hMenu, 6, MF_BYPOSITION) 'rimozione X
    removeXmenu = RemoveMenu(hMenu, 5, MF_BYPOSITION) ' " " separatore
    removeXmenu = RemoveMenu(hMenu, 4, MF_BYPOSITION) ' " " ripristina in basso
    End Function

    Funziona, l'iconcina e disattivata ma la vedo lo stesso


    ciao
    Mungo Mauro

  4. #4
    Utente di HTML.it L'avatar di fungo
    Registrato dal
    Jul 2000
    residenza
    Caorle
    Messaggi
    725

    RE

    Dopo suggerimenti e ricerche ho tirato fuori tutto questo:

    Questo è quello che ho assemblato ma purtroppo non ottengo niente.

    Con questo metodo ottengo quello che voglio ma in parte:

    Private Declare Function _
    GetSystemMenu Lib "user32" _
    (ByVal hwnd As Long, ByVal _
    bRevert As Long) As Long

    Private Declare Function _
    GetMenuItemCount Lib "user32" _
    (ByVal hMenu As Long) As Long

    Private Declare Function _
    DrawMenuBar Lib "user32" _
    (ByVal hwnd As Long) As Long

    Private Declare Function _
    RemoveMenu Lib "user32" _
    (ByVal hMenu As Long, ByVal _
    nPosition As Long, ByVal _
    wFlags As Long) As Long

    Const MF_BYPOSITION = &H400&
    Const MF_REMOVE = &H1000&

    Private Sub MDIForm_Load()

    Dim hSysMenu As Long, nCnt As Long
    ' Get handle to our form's system menu
    ' (Restore, Maximize, Move, close etc.)
    hSysMenu = GetSystemMenu(Me.hwnd, False)

    If hSysMenu Then
    ' Get System menu's menu count
    nCnt = GetMenuItemCount(hSysMenu)
    If nCnt Then
    ' Menu count is based on 0 (0, 1, 2, 3...)
    RemoveMenu hSysMenu, nCnt - 1, MF_BYPOSITION Or MF_REMOVE ' rimozione X
    RemoveMenu hSysMenu, nCnt - 2, MF_BYPOSITION Or MF_REMOVE ' rimozione separatore
    RemoveMenu hSysMenu, nCnt - 3, MF_BYPOSITION Or MF_REMOVE ' rimozione ingrandisci
    'RemoveMenu hSysMenu, nCnt - 4, MF_BYPOSITION Or MF_REMOVE ' rimozione riduci ad icona
    'RemoveMenu hSysMenu, nCnt - 5, MF_BYPOSITION Or MF_REMOVE ' rimozione ridimensiona
    'RemoveMenu hSysMenu, nCnt - 6, MF_BYPOSITION Or MF_REMOVE ' rimozione sposta
    'RemoveMenu hSysMenu, nCnt - 7, MF_BYPOSITION Or MF_REMOVE ' rimozione ripristina
    DrawMenuBar Me.hwnd
    End If
    End If

    End Sub

    Il risultato è che elimino le voci dal menu che apri ciccando sulla barra della form, disattivando a sua volta le iconcine della form. L'iconcina X si disattiva con la proprietà enabled a false mentre le icone riduci a icona e ripristina in basso sono disattivate ma con la proprietà enabled a true.

    Sulla ML di visual-basic ho trovato anche questo ma non da risulati :


    Private Declare Function _
    SendMessage Lib "user32" _
    Alias "SendMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long

    Private Declare Function _
    SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long

    Private Declare Function _
    GetWindowLong Lib "user32" _
    Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal _
    nIndex As Long) As Long



    Const WS_MAXIMIZEBOX = &H10000


    Private Sub MDIForm_Load()

    Dim lOldStile As Long, lRet As Long
    oStile = GetWindowLong(Me.hwnd, GWL_STYLE)

    lRet = SetWindowLong(Me.hwnd, GWL_STYLE, lOldStile _
    And (Not WS_MINIMIZEBOX) _
    And (Not WS_MAXIMIZEBOX))

    '/ questo serve per dare una 'rinfrescatina' al form
    '/ MDI, che non ha il metodo Paint
    SendMessage Me.hwnd, WM_NCPAINT, 1, 0&

    End Sub

    Ciao e spero che tutto questo possa essere utile a qualcuno.
    Mungo Mauro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.