Exemple #1
0
        /// <summary>
        /// Overrided to controll del scrolling of the customControl VScrollBar1
        /// </summary>
        /// <param name="m"></param>
        /// <remarks></remarks>
        protected override void WndProc(ref Message m)
        {
            if (!this.DesignMode && !(!this.Parent.CanFocus | (_win == null)))
            {
                int  wndStyle  = Win32.GetWindowLong(this._win.Handle, Win32.GWL_STYLE);
                bool hsVisible = (wndStyle & Win32.WS_HSCROLL) != 0;
                bool vsVisible = (wndStyle & Win32.WS_VSCROLL) != 0;

                //horizontal
                if (hsVisible)
                {
                    this.si2.fMask  = (int)Win32.ScrollInfoMask.SIF_ALL;
                    this.si2.cbSize = Marshal.SizeOf(this.si2);
                    Win32.GetScrollInfo(this._win.Handle, (int)Win32.ScrollBarDirection.SB_HORZ, ref this.si2);

                    if ((this.si2.nMax + 0) <= this.si2.nPage)
                    {
                        this.HScrollBar1.Visible = false;
                    }
                    else
                    {
                        this.HScrollBar1.Visible = true;
                        if (this.si2.nPage != 0)
                        {
                            HScrollBar1.LargeChange = si2.nPage;
                            HScrollBar1.Maximum     = si2.nMax;
                            HScrollBar1.Minimum     = si2.nMin;
                            HScrollBar1.SmallChange = 1;
                            this.HScrollBar1.Update();//.SyncThumbPositionWithLogicalValue();
                        }
                    }
                }
                if (_win.GetType() == typeof(System.Windows.Forms.ListView) || (_win.GetType() == typeof(KryptonListView)))
                {
                    ListView listView1 = (ListView)_win;

                    Win32.ScrollInfo si = new Win32.ScrollInfo();
                    si.cbSize = Marshal.SizeOf(si);
                    si.fMask  = (int)Win32.ScrollInfoMask.SIF_ALL;
                    if (Win32.GetScrollInfo(listView1.Handle, (int)Win32.ScrollBarDirection.SB_HORZ, ref si))
                    {
                        HScrollBar1.LargeChange = si.nPage;
                        HScrollBar1.Maximum     = si.nMax;
                        HScrollBar1.Minimum     = si.nMin;
                        HScrollBar1.SmallChange = 1;
                        this.HScrollBar1.Update();//.SyncThumbPositionWithLogicalValue();
                    }
                }
                if (_win.GetType() == typeof(KryptonGrid) || _win.GetType() == typeof(System.Windows.Forms.DataGridView) || (_win.GetType() == typeof(KryptonDataGridView)))
                {
                    Win32.SendMessage(_win.Handle, Win32.WM_HSCROLL, (IntPtr)Win32.SB_TOP, IntPtr.Zero);
                    _win.Invalidate();
                }
            }
            base.WndProc(ref m);
        }
Exemple #2
0
        public SKinComboBox()
        {
            InitializeComponent();

            this.gotCBI = InitComboBoxInfo(this);
            if (this.gotCBI)
            {
                this.cboListRect = new Win32.RECT();
                this.si          = new Win32.ScrollInfo();
                mDropdown        = new DropdownWindow(this);
                mDropdown.AssignHandle(cbi.hwndList);
            }
        }
        /// <summary>
        /// Overrided to controll del scrolling of the customControl VScrollBar1
        /// </summary>
        /// <param name="m"></param>
        /// <remarks></remarks>
        protected override void WndProc(ref Message m)
        {
            if (!this.DesignMode && !(!this.Parent.CanFocus | (_win == null)))
            {
                int  wndStyle  = Win32.GetWindowLong(this._win.Handle, Win32.GWL_STYLE);
                bool hsVisible = (wndStyle & Win32.WS_HSCROLL) != 0;
                bool vsVisible = (wndStyle & Win32.WS_VSCROLL) != 0;

                //debug
                //Console.WriteLine("Visible ScrollBars: " + GetVisibleScrollbars(_win));
                //ShowScrollBar(this._win.Handle, (int)ScrollBarDirection.SB_HORZ, false /*false*/);


                //vertical
                if (true)// (vsVisible || hsVisible)
                {
                    int  iWParam = (int)m.WParam;
                    int  iLParam = (int)m.LParam;
                    uint sbCode  = Win32.LoWord(m.WParam);

                    if (sbCode == Win32.SB_THUMBTRACK || sbCode == Win32.SB_THUMBPOSITION)
                    {
                        Win32.ScrollInfo siv = new Win32.ScrollInfo();
                        siv.cbSize = Marshal.SizeOf(siv);
                        siv.fMask  = (int)Win32.ScrollInfoMask.SIF_ALL;
                        Win32.ScrollInfo sih = siv;

                        uint nPos = Win32.HiWord(m.WParam);


                        Win32.GetScrollInfo(this._win.Handle, (int)Win32.ScrollBarDirection.SB_VERT, ref siv);
                        Win32.GetScrollInfo(this._win.Handle, (int)Win32.ScrollBarDirection.SB_HORZ, ref sih);

                        if ((sih.nMax + 0) <= sih.nPage)
                        {
                            this.HScrollBar1.Visible = false;
                        }
                        else
                        {
                            this.HScrollBar1.Visible = true;
                            if (sih.nPage != 0)
                            {
                                this.HScrollBar1.Maximum     = (sih.nMax - sih.nPage) + 1;
                                this.HScrollBar1.Minimum     = sih.nMin;
                                this.HScrollBar1.Value       = sih.nPos;
                                this.HScrollBar1.LargeChange = (int)Math.Round((double)(((double)sih.nMax) / ((double)sih.nPage)));
                                this.HScrollBar1.SyncThumbPositionWithLogicalValue();
                            }
                        }

                        if (vsVisible)
                        {
                            if ((siv.nMax + 0) < siv.nPage)
                            {
                                this.VScrollBar1.Visible = false;
                            }
                            else
                            {
                                this.VScrollBar1.Visible = true;
                                if (siv.nPage != 0)
                                {
                                    this.VScrollBar1.Maximum     = (siv.nMax - siv.nPage) + 1;
                                    this.VScrollBar1.Minimum     = siv.nMin;
                                    this.VScrollBar1.Value       = siv.nPos;
                                    this.VScrollBar1.LargeChange = (int)Math.Round((double)(((double)siv.nMax) / ((double)siv.nPage)));
                                    this.VScrollBar1.SyncThumbPositionWithLogicalValue();
                                }
                            }
                        }
                    }
                }
            }
            base.WndProc(ref m);
        }