77范文网 - 专业文章范例文档资料分享平台

C#重绘windows窗体标题栏和边框解析(4)

来源:网络收集 时间:2020-06-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

g.DrawImage(MinimumButtonImage, minRect);

} else if (MouseButtons != System.Windows.Forms.MouseButtons.Left) { g.DrawImage(MinimumButtonHoverImage, minRect); } else {

g.DrawImage(MinimumButtonPressDownImage, minRect); } } else { g.DrawImage(MinimumButtonImage, minRect); } }

} else if (this.HelpButton) { if (this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.FixedToolWindow && this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.SizableToolWindow) { if (posX != HTHELP) {

g.DrawImage(HelpButtonImage, maxRect);

} else if (MouseButtons != System.Windows.Forms.MouseButtons.Left) {

g.DrawImage(HelpButtonHoverImage, maxRect); } else {

g.DrawImage(HelpButtonPressDownImage, maxRect); } } }

g.Dispose();

ReleaseDC(m.HWnd, dc); }

break;

case WM_NCLBUTTONUP: {

int wp = m.WParam.ToInt32(); switch (wp) { case HTCLOSE:

m.Msg = WM_SYSCOMMAND;

m.WParam = new IntPtr(SC_CLOSE);

break;

case HTMAXBUTTON:

if (this.MaximizeBox) { m.Msg = WM_SYSCOMMAND; if (this.WindowState FormWindowState.Maximized) {

m.WParam = IntPtr(SC_RESTORE);

} else { m.WParam = IntPtr(SC_MAXIMIZE);

} }

break;

case HTMINBUTTON:

if (this.MinimizeBox) { m.Msg = WM_SYSCOMMAND; m.WParam = IntPtr(SC_MINIMIZE);

}

break; case HTHELP:

m.Msg = WM_SYSCOMMAND; m.WParam = IntPtr(SC_CONTEXTHELP);

break; default: break; }

break; }

case WM_NCLBUTTONDOWN: if (this.ControlBox) { bool ret = false; int posX, posY;

int wp = m.WParam.ToInt32(); long lp = m.LParam.ToInt64(); posX = LOBYTE(lp); posY = HIBYTE(lp);

_NonClientSizeInfo ncInfo GetNonClientInfo(m.HWnd);

IntPtr dc = GetWindowDC(m.HWnd);

== new

new

new

new

=

Brush SolidBrush(CaptionBackgroundColor);

backgroundColor = new

Graphics g = Graphics.FromHdc(dc);

int closeBtnPosX = ncInfo.CaptionRect.Left + ncInfo.CaptionRect.Width - ncInfo.BorderSize.Width - ncInfo.CaptionButtonSize.Width;

int maxBtnPosX, minBtnPosX;

int btnPosY = ncInfo.BorderSize.Height + (ncInfo.CaptionHeight - ncInfo.CaptionButtonSize.Height) / 2; maxBtnPosX = closeBtnPosX - ncInfo.CaptionButtonSize.Width;

minBtnPosX = maxBtnPosX - ncInfo.CaptionButtonSize.Width;

Rectangle btnRect = new Rectangle(new Point(closeBtnPosX, btnPosY), ncInfo.CaptionButtonSize);

Rectangle maxRect = new Rectangle(new Point(maxBtnPosX, btnPosY), ncInfo.CaptionButtonSize);

Rectangle minRect = new Rectangle(new Point(minBtnPosX, btnPosY), ncInfo.CaptionButtonSize);

g.FillRectangle(backgroundColor, btnRect); g.FillRectangle(backgroundColor, maxRect); g.FillRectangle(backgroundColor, minRect);

if (wp == HTCLOSE) {

g.DrawImage(CloseButtonPressDownImage, btnRect);

ret = true; } else {

g.DrawImage(CloseButtonImage, btnRect);

}

if (this.MaximizeBox || this.MinimizeBox) { if (this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.SizableToolWindow && this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.FixedToolWindow) { if (this.WindowState == FormWindowState.Maximized) {

if (wp == HTMAXBUTTON && this.MaximizeBox) {

minBtnPosX = maxBtnPosX - ncInfo.CaptionButtonSize.Width;

g.DrawImage(MaximumNormalButtonPressDownImage, maxRect); ret = true; } else {

g.DrawImage(MaximumNormalButtonImage, maxRect); } } else {

if (wp == HTMAXBUTTON && this.MaximizeBox) {

minBtnPosX = maxBtnPosX - ncInfo.CaptionButtonSize.Width;

g.DrawImage(MaximumButtonPressDownImage, maxRect);

ret = true; } else { g.DrawImage(MaximumButtonImage, maxRect); } }

if (wp == HTMINBUTTON && this.MinimizeBox) {

g.DrawImage(MinimumButtonPressDownImage, minRect); ret = true; } else { g.DrawImage(MinimumButtonImage, minRect); } }

} else if (this.HelpButton) { if (this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.FixedToolWindow && this.FormBorderStyle != System.Windows.Forms.FormBorderStyle.SizableToolWindow) { if (wp == HTHELP) {

g.DrawImage(HelpButtonPressDownImage, maxRect); ret = true; } else {

g.DrawImage(HelpButtonImage, maxRect);

} } }

g.Dispose();

ReleaseDC(m.HWnd, dc); if (ret) return; }

break; } }

base.WndProc(ref m); }

#endregion } } 运行效果:

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C#重绘windows窗体标题栏和边框解析(4)在线全文阅读。

C#重绘windows窗体标题栏和边框解析(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1097430.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: