VisualEleven你好,你在吗?
我想实现一个拖动按钮的功能,拖动按钮,按钮跟着跑。于是参考了你的代码:
这是版主的代码:
http://blog.csdn.net/visualeleven/article/details/7177775
我的绘制效果巨烂无比。 拖动过程中有时候会"看不到按钮",甚至会影响到对话框的关闭。
怎么这么奇怪,我的代码和版主你的原理差不多啊。
我模仿的代码:
CMyButton::CMyButton()
{
bDraged=FALSE;
}
CMyButton::~CMyButton()
{
}
BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
// CMyButton 消息处理程序
void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
bDraged=TRUE;
//PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
m_pt=point;
CButton::OnLButtonDown(nFlags, point);
}
void CMyButton::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
bDraged=FALSE;
}
void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(bDraged)//move
{
int nCX=point.x-m_pt.x;
int nCY=point.y-m_pt.y;
CRectrect;
int nWidth,nHeight;
nWidth=nHeight=0;
GetWindowRect(&rect);
CWnd* pParent=GetParent();
ASSERT(pParent);
pParent->ScreenToClient(&rect);
nWidth=rect.Width();
nHeight=rect.Height();
rect.left+=nCX;
rect.top+=nCY;
rect.right=rect.left+nWidth;
rect.bottom=rect.top+nHeight;
MoveWindow(&rect);
m_pt=point;
}
CButton::OnMouseMove(nFlags, point);
}
效果差,居然会影响到关闭对话框,我就郁闷
[解决办法]
eleven兄头像那个孩子到底是男孩还是女孩,还是有龙凤胎?
[解决办法]