昨天学习了窗口的自绘,即去掉窗口的非客户区,自己来模拟窗口的客户区与非客户区,然后来对其进行操作。。
发现问题:
今天早上运行时候发现一个问题:即当我把窗口Dialog的属性页面上的sys_menu选项设置成为True,将会出现运行程序不能出现对话框的情景。
后来发现原来是我SetWindowLong(m_hWnd, GWL_EXSTYLE, dwNewExStyle)写错了。。
今天来学习按钮的重绘:
按钮基本上是Windows应用程序编写时候必不可少的控件。而Windows提供的按钮可能不尽人意,这就需要我们对BUtton重写了。
一,定义一个类叫做CMyButton,其基类为CButton。
二, 按钮在操作的时候应该实现以下几种状态:
1、鼠标经过,当鼠标经过的时候,按钮应该改变颜色或者变为高亮状态。这是就要用到WM_MOUSEMOVE消息。我们通过重写OnMouseMove函数:
void CMyButtonEx::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(!m_bHovering)
{
m_bHovering = true;
Invalidate(false);
TRACKMOUSEEVENT TrackMouseEvent;
TrackMouseEvent.cbSize = sizeof(TrackMouseEvent);
TrackMouseEvent.dwFlags = TME_LEAVE;
TrackMouseEvent.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent.hwndTrack = GetSafeHwnd();
_TrackMouseEvent(&TrackMouseEvent);
}
CButton::OnMouseMove(nFlags, point);
}
其中m_bHovering是一个bool变量,表示鼠标是否在按钮上。。
2、鼠标离开,按