Oppure

Loading
19/12/17 19:04
piter123
buongiorno,
in un piccolo progetto vbnet ho un mdi form padre, quando vado a creare delle form figlie al suo interno e le sposto oltre i limiti dello schermo, automaticamente la form padre si ridimensiona e genera delle scrollbar.

Muovendo queste scrollbar il corpo della form padre scorre facendomi vedere le form figlie con top e left oltre le dimensioni dello schermo.

Come intercetto il valore delle scrollbar, sia min che max che value

Grazie
Ultima modifica effettuata da piter123 19/12/17 19:04
aaa
20/12/17 14:10
Thejuster
Credo che non sia così facile.

Serve un pinvoke sul form padre a qualche funzione nativa che dia i valori corretti delle scrollbar

Appena ho un po' di tempo vedo se riesco s trovarti una soluzione.
Nel frattempo puoi fare un occhiata qui

pinvoke.net/

Vedi se riesci a trovare quello che fa per te.
Uhm prova a guardare in user32.dll
mire.forumfree.it/ - Mire Engine
C# UI Designer
20/12/17 16:51
piter123
intanto grazie per l'interessamento, ho provato a dare un'occhiata al link postato, ma non sono riuscito a realizzare nulla, cmq nel frattempo grazie mille
aaa
21/12/17 9:25
Thejuster
In questi periodi non ho molto tempo, si lavora tanto, cmq ho dato uno sguardo su pinvoke.
Non hai prestato abbastanza attenzione ;)


pinvoke.net/default.aspx/…

Questo e quello che ti serve.
La chiamata api.

Normalmente la libreria user32.dll di windows fornisce un elenco dettagliato di tutte le api possibili per la manipolazione dei controlli.

Cercando su google al getscrollpos
Ho trovato questo esempio che potrebbe aiutarti dagli uno sguardo.


  [DllImport("User32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int GetScrollPos(IntPtr hWnd, int nBar);
    public int hpos = 0;
    void MdiClient_Scroll(object sender, ScrollEventArgs e)
    {
        hpos += e.NewValue; 
        Console.WriteLine(hpos);
    }
    private MdiClientWrapper wrapper;
    protected override void OnHandleCreated(EventArgs e)
    {
        // Find the MdiClient and sub-class it so we can get the Scroll event
        base.OnHandleCreated(e);
        if (wrapper != null) wrapper.Scroll -= MdiClient_Scroll;
        var client = this.Controls.OfType<MdiClient>().First();
        wrapper = new MdiClientWrapper();
        wrapper.AssignHandle(client.Handle);
        wrapper.Scroll += MdiClient_Scroll;
    }

    private class MdiClientWrapper : NativeWindow
    {
        public event ScrollEventHandler Scroll;
        private int oldPos;
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x114)
            {   // Trap WM_HSCROLL
                var type = (ScrollEventType)(m.WParam.ToInt32() & 0xffff);
                var pos = GetScrollPos(this.Handle, SBS_HORZ);//m.WParam.ToInt32() >> 16;
                Scroll(this, new ScrollEventArgs(type, oldPos, pos));
                oldPos = pos;
            }
            base.WndProc(ref m);
        }
    }

mire.forumfree.it/ - Mire Engine
C# UI Designer
22/12/17 7:20
piter123
grazie mille, nei prossimi giorni farò delle prove
aaa