private void UpdateBand(CommandBar commandBar) { if (this.IsHandleCreated) { this.BeginUpdate(); for (int i = 0; i < this.commandBars.Count; i++) { NativeMethods.REBARBANDINFO rbbi = new NativeMethods.REBARBANDINFO(); rbbi.cbSize = Marshal.SizeOf(typeof(NativeMethods.REBARBANDINFO)); rbbi.fMask = NativeMethods.RBBIM_STYLE | NativeMethods.RBBIM_ID | NativeMethods.RBBIM_TEXT | NativeMethods.RBBIM_STYLE | NativeMethods.RBBIM_CHILD | NativeMethods.RBBIM_SIZE | NativeMethods.RBBIM_CHILDSIZE | NativeMethods.RBBIM_IDEALSIZE; NativeMethods.SendMessage(this.Handle, NativeMethods.RB_GETBANDINFO, i, ref rbbi); if (commandBar.Handle == rbbi.hwndChild) { if ((rbbi.cyMinChild != commandBar.Height) || (rbbi.cx != commandBar.Width) || (rbbi.cxIdeal != commandBar.Width)) { rbbi.cyMinChild = commandBar.Height; rbbi.cx = commandBar.Width; rbbi.cxIdeal = commandBar.Width; NativeMethods.SendMessage(this.Handle, NativeMethods.RB_SETBANDINFO, i, ref rbbi); } } } this.UpdateSize(); this.EndUpdate(); } }
private NativeMethods.REBARBANDINFO CreateBandInfo(int index) { CommandBar commandBar = this.commandBars[index]; NativeMethods.REBARBANDINFO rbbi = new NativeMethods.REBARBANDINFO(); rbbi.cbSize = Marshal.SizeOf(typeof(NativeMethods.REBARBANDINFO)); rbbi.fMask = 0; rbbi.clrFore = 0; rbbi.clrBack = 0; rbbi.iImage = 0; rbbi.hbmBack = IntPtr.Zero; rbbi.lParam = 0; rbbi.cxHeader = 0; rbbi.fMask |= NativeMethods.RBBIM_ID; rbbi.wID = 0xEB00 + index; if ((commandBar.Text != null) && (commandBar.Text.Length != 0)) { rbbi.fMask |= NativeMethods.RBBIM_TEXT; rbbi.lpText = Marshal.StringToHGlobalUni(commandBar.Text); rbbi.cch = (commandBar.Text == null) ? 0 : commandBar.Text.Length; } rbbi.fMask |= NativeMethods.RBBIM_STYLE; rbbi.fStyle = NativeMethods.RBBS_CHILDEDGE | NativeMethods.RBBS_FIXEDBMP | NativeMethods.RBBS_GRIPPERALWAYS; rbbi.fStyle |= NativeMethods.RBBS_BREAK; rbbi.fStyle |= NativeMethods.RBBS_USECHEVRON; rbbi.fMask |= NativeMethods.RBBIM_CHILD; rbbi.hwndChild = commandBar.Handle; rbbi.fMask |= NativeMethods.RBBIM_CHILDSIZE; rbbi.cyMinChild = commandBar.Height; rbbi.cxMinChild = 0; rbbi.cyChild = 0; rbbi.cyMaxChild = commandBar.Height; rbbi.cyIntegral = commandBar.Height; rbbi.fMask |= NativeMethods.RBBIM_SIZE; rbbi.cx = commandBar.Width; rbbi.fMask |= NativeMethods.RBBIM_IDEALSIZE; rbbi.cxIdeal = commandBar.Width; return(rbbi); }
protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); this.ReleaseBands(); this.BeginUpdate(); for (int i = 0; i < this.commandBars.Count; i++) { NativeMethods.REBARBANDINFO bandInfo = this.CreateBandInfo(i); NativeMethods.SendMessage(this.Handle, NativeMethods.RB_INSERTBAND, i, ref bandInfo); } this.UpdateSize(); this.EndUpdate(); this.CaptureBands(); }