场景:
1.比如自定义Dialog窗口时,需要单击标题栏按下拖动窗口.
2.目前并没有实现类似QQ播放器那种拖动显示边框的,只能连窗口内容一起移动.
关键代码:
void DhWindowMove::CallOnLeftDown2(wxWindow* top_window,
wxWindow* response_window, const wxMouseEvent& event, wxPoint& offset)
{
response_window->CaptureMouse();
wxPoint pos = response_window->ClientToScreen(event.GetPosition());
wxPoint origin = top_window->GetPosition();
offset.x = pos.x - origin.x;
offset.y = pos.y - origin.y;
}
void DhWindowMove::CallOnLeftUp2(wxWindow* top_window,
wxWindow* response_window, const wxMouseEvent& event,
const wxPoint& offset)
{
if (response_window->HasCapture())
{
response_window->ReleaseMouse();
}
}
void DhWindowMove::CallOnMotion2(wxWindow* top_window,
wxWindow* response_window, const wxMouseEvent& event,
const wxPoint& offset)
{
wxPoint pt = event.GetPosition();
if (event.Dragging() && event.LeftIsDown() && response_window->HasCapture())
{
wxPoint pos = response_window->ClientToScreen(pt);
top_window->Move(wxPoint(pos.x - offset.x, pos.y - offset.y));
}
}
3.offset是一个成员变量,主要是记录偏移量.
4.要实现带矩形框的拖动,其实参考mfc的实现应该可以,改天贴上来。