关于在对话框中拖动按钮的功能,该如何处理

关于在对话框中拖动按钮的功能
我想在对话框中动态添加若干个按钮,并且能够在执行的时候随意拖动这些按钮到客户区的任意地方,我也看了一些网友的实现,但功能还是没能完成,请做过这个功能的达人指教一下。下面是我的方法:
我继承了一个CButton类   CBtnEx,然后给CBtnEx添加了
void   CBtnEx::OnMouseMove(UINT   nFlags,   CPoint   point)  
void   CBtnEx::OnLButtonDown(UINT   nFlags,   CPoint   point)  
void   CBtnEx::OnLButtonUp(UINT   nFlags,   CPoint   point)   响应函数,具体代码如下:
void   CBtnEx::OnLButtonDown(UINT   nFlags,   CPoint   point)  
{
m_lButtonDown=TRUE;//判断左键是否按下
CButton::OnLButtonDown(nFlags,   point);
}

void   CBtnEx::OnLButtonUp(UINT   nFlags,   CPoint   point)  
{
m_lButtonDown=FALSE;
CButton::OnLButtonUp(nFlags,   point);
}

void   CBtnEx::OnMouseMove(UINT   nFlags,   CPoint   point)  
{
POINT   pt;
GetCursorPos(&pt);
CRect   rt,clientRt;
GetWindowRect(&rt);
if   (rt.PtInRect(pt)   &&   m_lButtonDown   ==TRUE)
{
GetClientRect(&clientRt);
clientRt.left+=point.x;
clientRt.right+=point.x;
clientRt.top+=point.y;
clientRt.bottom+=point.y;
MoveWindow(&clientRt);
}
CButton::OnMouseMove(nFlags,   point);
}

我的dlg类是CDragBtnDlg,里面有动态添加按钮的实现,具体代码如下:
void   CDragbtnDlg::OnAddbtn()  
{
UpdateData(TRUE);
btn=new   CBtnEx();
btn-> Create(m_strRegion,WS_CHILD   |   WS_VISIBLE,CRect(0,0,100,30),this,1);
}

void   CDragbtnDlg::OnClose()  
{
if(btn)
delete   btn;
CDialog::OnClose();
}
基本上就是这样了,但是功能实现不了,请各位经验网友指点一下,把你们的代码贴上来吧,谢了

------解决方案--------------------
最方便的方法,和移动对话框一样,我测试过的
void CBtnEx::OnLButtonDown(UINT nFlags, CPoint point)
{

//先做LButtonDown要做的事情
......
//然后
PostMessage(WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARAM (point.x , point. y ) ) ;

}

8 fen O!