VC/MFC拖动窗口任意位置移动窗口
除了拖动标题栏移动窗口以外,我们也可以拖动窗口任意位置(除控件)位置而使对话框移动。
这里只讲述基于对话框的程序
- class c**dlg:public CDialog
- {
- //Construction
- public:
- Crect startRect; //窗口的初始位置所在的矩形
- bool isMouseDown; //鼠标是否按下
- CPoint startPoint; //鼠标按下的位置
- .......
其次添加OnLButtonDown消息响应函数
- void c**dlg::OnLButtonDown(UINT nFlags, CPoint point)
- {
- isMouseDown=true;
- startPoint = point;
- this->GetWindowRect(startRect);
- CDialog::OnLButtonDown(nFlags, point);
- }
添加OnMouseMove消息响应函数
- void c**dlg::ONMouseMove(UINT nFlags, CPoint point)
- {
- if(isMouseDown == true)
- {
- int Dx = point.x - startPoint.x;
- int Dy = point.y - startPoint.y;
- startRect.left += Dx;
- startRect.right += Dx;
- startRect.top +=Dy;
- startRect.bottom +=Dy; //获取新的位置
- this->MoveWindow(&startRect); //将窗口移到新的位置
- }
- CDialog::OnMouseMove(nFlags, point);
- }
当释放鼠标时不再拖动窗口,所以要添加OnLButtonUp消息响应函数
- void c**dlg::OnLButtonUp(UINT nFlags, CPoint point)
- {
- isMouseDown = false;
- //CDialog::OnLButtonUp(nFlags,Point);
- }
//转:http://blog.csdn.net/luanwujian/article/details/9059861
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)