Closed clearsky closed 2 years ago
找到问题了 DoDraging
里面有句注释 //这里创建新窗口 当然得确保不能重复有窗口,这里省略
Window::Close
用的TimerManager::GetInstance()->AddCancelableTimer(m_closeFlag.GetWeakFlag(), closeCallback, 300, 1);
关闭窗口是有延迟的,如果在这个延迟内再次点击拖动就创造了一个新窗口
这个时候之前的关闭窗口生效了,进入OnClose把pThis置空了,那么现在这个新窗口就关闭不了了
问题现象
examples的move_control中元素移动的快一点就会导致拖动显示窗口类AppWindow不会关闭 在LowLevelMouseProc或Window::Close中下断点,vs就卡住鼠标开始漂移,调试不了找不知道问题在哪,所以在这来问下这个问题可能的原因 这个时候这些没正常关闭的窗口已经不能再拖动了,说明已经进入AppWindow::OnClose执行了UnInstallHook()
预期结果
拖动显示窗口类AppWindow正常关闭
重现步骤
快速点击元素拖动然后松开鼠标