1 参考仿QQ悬挂窗口的实现 作者: 郑瑜。 在调试基础上,对悬挂功能[Docking]进行封装处理。非常方便实际编程中的直接调用。再次感谢郑瑜,通过他的文章而产生的灵感。
2 按钮,用CButtonST实现 参考www.codeproject.com , 详细参考:
CButtonST v3.9 (MFC Flat buttons)
By Davide Calabro
方便应用程序使用:
代码思想:
1 添加WM_MOUSE的全局钩子[dll]
2 通过对mouse当前坐标、Wnd的ClientRect判断,进行不同的slide
利用SetWindowPo, sleep(30)模拟动态悬挂效果。
核心代码:
- void Docking::TranslateMessage()
- {
- //减少常变量析构; 加快程序效率
- static const int Span = 5; //对此单位元素就进行Docking
- POINT pt;
- CRect rcWindow;
- ::GetCursorPos(&pt);
- m_Wnd->GetWindowRect(&rcWindow);
- //如果pt在窗体中, 直接返回
- if ((rcWindow.PtInRect(pt) && rcWindow.Width() > SpanValue)
- && (rcWindow.PtInRect(pt) && rcWindow.Height() > SpanValue))
- return ;
- if (rcWindow.Width() > Span && rcWindow.left < Span)//Left -> Hide
- {
- SliderWindow(LEFT, false);
- }
- else if(rcWindow.Width() < Span &