protected override void WndProc(ref Message m) { //if native updown is destroyed we need release our hook if (m.Msg == NativeMethods.WM_DESTROY || m.Msg == NativeMethods.WM_NCDESTROY) { this.ReleaseHandle(); } else if (m.Msg == NativeMethods.WM_WINDOWPOSCHANGING) { //When scroller position is changed we should remember that new position. x = ((NativeMethods.WINDOWPOS)m.GetLParam(typeof(NativeMethods.WINDOWPOS))).x; } else if (m.Msg == NativeMethods.WM_MOUSEMOVE && fparent.lastHotIndex > 0 && fparent.lastHotIndex != fparent.SelectedIndex) { //owerdrawing former hot tab as normal using (Graphics context = Graphics.FromHwnd(fparent.Handle)) { using (StringFormat textFormat = new StringFormat()) { textFormat.Alignment = StringAlignment.Center; textFormat.LineAlignment = StringAlignment.Center; fparent.DrawTabItem(context, fparent.lastHotIndex, TabItemState.Normal, fparent.GetTabRect(fparent.lastHotIndex), textFormat); if (fparent.lastHotIndex - fparent.SelectedIndex == 1) { Rectangle selRect = fparent.GetTabRect(fparent.SelectedIndex); selRect.Inflate(2, 2); fparent.DrawTabItem(context, fparent.SelectedIndex, TabItemState.Selected, selRect, textFormat); } } } } else if (m.Msg == NativeMethods.WM_LBUTTONDOWN) { Rectangle invalidRect = fparent.GetTabRect(fparent.SelectedIndex); invalidRect.X = 0; invalidRect.Width = 2; invalidRect.Inflate(0, 2); fparent.Invalidate(invalidRect); } else if (m.Msg == NativeMethods.WM_SHOWWINDOW) { // If the scroll control for the labels is being hidden we need to stop // clipping the labels. // USUALLY we get WM_WINDOWPOSCHANGING with position 0 as well as this // message, but not while starting up a parent control that gets laid out // twice, first at a width that needs the scroll control and later at a width // that does not. See FWR-1794 for one case where this can be a problem. if (m.WParam.ToInt32() == 0) // window being hidden { x = 0; } } base.WndProc(ref m); }
protected override void WndProc(ref Message m) { //if native updown is destroyed we need release our hook if (m.Msg == NativeMethods.WM_DESTROY || m.Msg == NativeMethods.WM_NCDESTROY) { this.ReleaseHandle(); } else if (m.Msg == NativeMethods.WM_WINDOWPOSCHANGING) { //When scroller position is changed we should remember that new position. x = ((NativeMethods.WINDOWPOS)m.GetLParam(typeof(NativeMethods.WINDOWPOS))).x; } else if (m.Msg == NativeMethods.WM_MOUSEMOVE && fparent.lastHotIndex > 0 && fparent.lastHotIndex != fparent.SelectedIndex) { //owerdrawing former hot tab as normal using (Graphics context = Graphics.FromHwnd(fparent.Handle)) { StringFormat textFormat = new StringFormat(); textFormat.Alignment = StringAlignment.Center; textFormat.LineAlignment = StringAlignment.Center; fparent.DrawTabItem(context, fparent.lastHotIndex, TabItemState.Normal, fparent.GetTabRect(fparent.lastHotIndex), textFormat); if (fparent.lastHotIndex - fparent.SelectedIndex == 1) { Rectangle selRect = fparent.GetTabRect(fparent.SelectedIndex); selRect.Inflate(2, 2); fparent.DrawTabItem(context, fparent.SelectedIndex, TabItemState.Selected, selRect, textFormat); } } } else if (m.Msg == NativeMethods.WM_LBUTTONDOWN) { Rectangle invalidRect = fparent.GetTabRect(fparent.SelectedIndex); invalidRect.X = 0; invalidRect.Width = 2; invalidRect.Inflate(0, 2); fparent.Invalidate(invalidRect); } base.WndProc(ref m); }