private int GetBandInfoImpl(uint dwBandID, DESKBANDINFO.DBIF dwViewMode, ref DESKBANDINFO pdbi) { DeskBandID = dwBandID; if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_MINSIZE)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptMinSize.Y = MinSizeVertical.Width; pdbi.ptMinSize.X = MinSizeVertical.Height; } else { pdbi.ptMinSize.X = MinSize.Width; pdbi.ptMinSize.Y = MinSize.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_MAXSIZE)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptMaxSize.Y = MaxSize.Width; pdbi.ptMaxSize.X = MaxSize.Height; } else { pdbi.ptMaxSize.X = MaxSize.Width; pdbi.ptMaxSize.Y = MaxSize.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_INTEGRAL)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptIntegral.Y = IntegralSize.Width; pdbi.ptIntegral.X = IntegralSize.Height; } else { pdbi.ptIntegral.X = IntegralSize.Width; pdbi.ptIntegral.Y = IntegralSize.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_ACTUAL)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptActual.Y = Size.Width; pdbi.ptActual.X = Size.Height; } else { pdbi.ptActual.X = Size.Width; pdbi.ptActual.Y = Size.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_TITLE)) { pdbi.wszTitle = Title; pdbi.dwMask &= ShowTitle ? DESKBANDINFO.DBIM.DBIM_TITLE : ~DESKBANDINFO.DBIM.DBIM_TITLE; } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_MODEFLAGS)) { pdbi.dwModeFlags = DESKBANDINFO.DBIMF.DBIMF_NORMAL; pdbi.dwModeFlags |= IsFixed ? DESKBANDINFO.DBIMF.DBIMF_FIXED | DESKBANDINFO.DBIMF.DBIMF_NOGRIPPER : 0; pdbi.dwModeFlags |= HeightCanChange ? DESKBANDINFO.DBIMF.DBIMF_VARIABLEHEIGHT : 0; pdbi.dwModeFlags &= ~DESKBANDINFO.DBIMF.DBIMF_BKCOLOR; } return(S_OK); }
/// <inheritdoc/> public int GetBandInfo(uint dwBandID, DESKBANDINFO.DBIF dwViewMode, ref DESKBANDINFO pdbi) { // Sizing information is requested whenever the taskbar changes size/orientation _id = dwBandID; if (pdbi.dwMask.HasFlag(DBIM_MINSIZE)) { if (dwViewMode.HasFlag(DBIF_VIEWMODE_VERTICAL)) { pdbi.ptMinSize.Y = Options.MinVerticalSize.Width; pdbi.ptMinSize.X = Options.MinVerticalSize.Height; } else { pdbi.ptMinSize.X = Options.MinHorizontalSize.Width; pdbi.ptMinSize.Y = Options.MinHorizontalSize.Height; } } // X is ignored if (pdbi.dwMask.HasFlag(DBIM_MAXSIZE)) { if (dwViewMode.HasFlag(DBIF_VIEWMODE_VERTICAL)) { pdbi.ptMaxSize.Y = Options.MaxVerticalWidth; pdbi.ptMaxSize.X = 0; } else { pdbi.ptMaxSize.X = 0; pdbi.ptMaxSize.Y = Options.MaxHorizontalHeight; } } // x member is ignored if (pdbi.dwMask.HasFlag(DBIM_INTEGRAL)) { pdbi.ptIntegral.Y = Options.HeightIncrement; pdbi.ptIntegral.X = 0; } if (pdbi.dwMask.HasFlag(DBIM_ACTUAL)) { if (dwViewMode.HasFlag(DBIF_VIEWMODE_VERTICAL)) { pdbi.ptActual.Y = Options.VerticalSize.Width; pdbi.ptActual.X = Options.VerticalSize.Height; } else { pdbi.ptActual.X = Options.HorizontalSize.Width; pdbi.ptActual.Y = Options.HorizontalSize.Height; } } if (pdbi.dwMask.HasFlag(DBIM_TITLE)) { pdbi.wszTitle = Options.Title; if (!Options.ShowTitle) { pdbi.dwMask &= ~DBIM_TITLE; } } if (pdbi.dwMask.HasFlag(DBIM_MODEFLAGS)) { pdbi.dwModeFlags = DBIMF_NORMAL; pdbi.dwModeFlags |= Options.IsFixed ? DBIMF_FIXED | DBIMF_NOGRIPPER : 0; pdbi.dwModeFlags |= Options.HeightCanChange ? DBIMF_VARIABLEHEIGHT : 0; pdbi.dwModeFlags &= ~DBIMF_BKCOLOR; // Don't use background color } TaskbarInfo.UpdateInfo(); return(HRESULT.S_OK); }
public int GetBandInfo(uint dwBandID, DESKBANDINFO.DBIF dwViewMode, ref DESKBANDINFO pdbi) { if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_MINSIZE)) { // Support for a vertical taskbar // Most examples have no support for a vertical taskbar. Who in hell uses their taskbar vertically? Me! Very practical on a 21:9 monitor. if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptMinSize.Y = this.MinSizeVertical.Width; pdbi.ptMinSize.X = this.MinSizeVertical.Height; } else { pdbi.ptMinSize.X = this.MinSize.Width; pdbi.ptMinSize.Y = this.MinSize.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_MAXSIZE)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptMaxSize.Y = this.MaxSize.Width; pdbi.ptMaxSize.X = this.MaxSize.Height; } else { pdbi.ptMaxSize.X = this.MaxSize.Width; pdbi.ptMaxSize.Y = this.MaxSize.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_INTEGRAL)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptIntegral.Y = this.IntegralSize.Width; pdbi.ptIntegral.X = this.IntegralSize.Height; } else { pdbi.ptIntegral.X = this.IntegralSize.Width; pdbi.ptIntegral.Y = this.IntegralSize.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_ACTUAL)) { if (dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_FLOATING) || dwViewMode.HasFlag(DESKBANDINFO.DBIF.DBIF_VIEWMODE_VERTICAL)) { pdbi.ptActual.Y = this.Size.Width; pdbi.ptActual.X = this.Size.Height; } else { pdbi.ptActual.X = this.Size.Width; pdbi.ptActual.Y = this.Size.Height; } } if (pdbi.dwMask.HasFlag(DESKBANDINFO.DBIM.DBIM_TITLE)) { pdbi.wszTitle = this.Title; } pdbi.dwModeFlags = DESKBANDINFO.DBIMF.DBIMF_ALWAYSGRIPPER | DESKBANDINFO.DBIMF.DBIMF_NORMAL | DESKBANDINFO.DBIMF.DBIMF_VARIABLEHEIGHT; pdbi.dwMask = pdbi.dwMask | DESKBANDINFO.DBIM.DBIM_BKCOLOR | DESKBANDINFO.DBIM.DBIM_TITLE; // Testen return(S_OK); }