MFC重绘关闭按钮,并给图片添加点击事件

1,在重绘函数中加载关闭按钮图片,

2,给MainFrame增加单击事件,在单击响应中判断是否点击的关闭按钮

//如果点击关闭按钮,关闭软件

void CMainFrame::OnNcLButtonUp(UINT nHitTest, CPoint point)
{
// TODO: Add your message handler code here and/or call default
POINT pt;

//分别用于保存窗口位置、按钮位置、框架位置和标题栏位置的临时变量
CRect rtWnd,rtButtons,rtTitle;
//获取窗口位置
GetWindowRect(&rtWnd);
//获取标题栏位置
rtTitle.top = GetSystemMetrics(SM_CYFRAME);
rtTitle.left = GetSystemMetrics(SM_CXFRAME);
rtTitle.bottom = GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYSIZE);
rtTitle.right = rtWnd.Width()-GetSystemMetrics(SM_CXFRAME);

CBitmap *pBitmap = new CBitmap;
BITMAP bm;
//获取重绘关闭按钮
pBitmap->LoadBitmap(IDB_EXIT_GRAY);
pBitmap->GetBitmap(&bm);
//pDisplayMemDC->SelectObject(pBitmap);
//获取关闭按钮位置
rtButtons.left=rtTitle.right-bm.bmWidth-5;
rtButtons.top=GetSystemMetrics(SM_CYFRAME)+(rtTitle.Height()-bm.bmHeight)/2;
rtButtons.right=rtButtons.left+bm.bmWidth;
rtButtons.bottom=rtButtons.top+bm.bmHeight;

pt.x = point.x;
pt.y = point.y;
if (PtInRect(&rtButtons, pt))
{
//int a = 10;
//::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用
::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用
}
CFrameWndEx::OnNcLButtonUp(nHitTest, point);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值