在自绘对话框的右上角画出了自己需要的 close、maximize、minimize这三个按钮,还需要在ON_WM_NCHITTEST消息里面屏蔽掉这三个按钮的点击,不然在OnMouseMove()绘制的时候,就算鼠标移到按钮区域也不会出现自己想要的高亮风格,困扰了一下午。
错误效果:
例如:
LRESULT CMyStockDlg::OnNcHitTest(CPoint point)
{
LRESULT uHitTest = CDialogEx::OnNcHitTest(point);
CRect rect, rcCaption;
GetClientRect(&rect);
rcCaption = rect;
rcCaption.bottom = 40;
ScreenToClient(&point);
if (rcCaption.PtInRect(point) && !m_rcClose.PtInRect(point)&&!m_rcMax.PtInRect(point)&&!m_rcMin.PtInRect(point))
{
if (uHitTest == HTCLIENT)
uHitTest = HTCAPTION;
}
return uHitTest;
}
效果图: