用鼠标来动态改变一个控件的大小位置 比如要改变对话框内的一个按钮的大小和位置
派生一个按钮类CMyButton,响应WM_NCHITTEST消息
LRESULT CMyButton::OnNcHitTest(CPoint point)
{
if (!rect.PtInRect(pt))
{
if (pt.x <= nFrame && pt.y >= rect.bottom - nFrame)
{
return HTBOTTOMLEFT;
}
else if (pt.x <= nFrame && pt.y <= nFrame)
{
return HTTOPLEFT;
}
else if (pt.x >= rect.right - nFrame && pt.y <= nFrame)
{
return HTTOPRIGHT;
}
else if (pt.x >= rect.right - nFrame && pt.y >= rect.bottom - nFrame)
{
return HTBOTTOMRIGHT;
}
else if (pt.x <= nFrame)
{
return HTLEFT;
}
else if (pt.y <= nFrame)
{ return HTTOP;
}
else if (pt.y >= rect.bottom - nFrame)
{
return HTBOTTOM;
}
else if (pt.x >= rect.right - nFrame)
{
return HTRIGHT;
}
}
else
{
return HTCAPTION;
}
}这个办法对按钮控件有效,对listbox控件有效,都能改变位置和大小
对picture控件一点效果也没有,既不能改变位置,也不能改变大小,请论坛高人帮忙指出原因
或者能提供其他方法能用鼠标改变picture控件的位置和大小
派生一个按钮类CMyButton,响应WM_NCHITTEST消息
LRESULT CMyButton::OnNcHitTest(CPoint point)
{
if (!rect.PtInRect(pt))
{
if (pt.x <= nFrame && pt.y >= rect.bottom - nFrame)
{
return HTBOTTOMLEFT;
}
else if (pt.x <= nFrame && pt.y <= nFrame)
{
return HTTOPLEFT;
}
else if (pt.x >= rect.right - nFrame && pt.y <= nFrame)
{
return HTTOPRIGHT;
}
else if (pt.x >= rect.right - nFrame && pt.y >= rect.bottom - nFrame)
{
return HTBOTTOMRIGHT;
}
else if (pt.x <= nFrame)
{
return HTLEFT;
}
else if (pt.y <= nFrame)
{ return HTTOP;
}
else if (pt.y >= rect.bottom - nFrame)
{
return HTBOTTOM;
}
else if (pt.x >= rect.right - nFrame)
{
return HTRIGHT;
}
}
else
{
return HTCAPTION;
}
}这个办法对按钮控件有效,对listbox控件有效,都能改变位置和大小
对picture控件一点效果也没有,既不能改变位置,也不能改变大小,请论坛高人帮忙指出原因
或者能提供其他方法能用鼠标改变picture控件的位置和大小
{
// TODO: Add your message handler code here and/or call default
static CPoint ptLast;
if(MK_LBUTTON==nFlags)
{
CRect rc;
GetWindowRect(&rc);
ScreenToClient(&rc);
MapWindowPoints(GetParent(),&rc);
MoveWindow(rc.left+(point.x-ptLast.x), rc.top+(point.y-ptLast.y), rc.Width(), rc.Height());
}
else
{
ptLast=point;
CStatic::OnMouseMove(nFlags, point);
}
Invalidate();
//
// CStatic::OnMouseMove(nFlags, point);
}
class CMyButton : public CButton,public CRectTracker
另外注意,是要从CStatic派生子类
还有picture控件有修改它的ID并映射到派生出来的子类上吧?