我用RGN创建的圆形窗口,但是没有办法脱动它,怎么设置拖动区域?
解决方案 »
- error LNK2005: ImageFormatUndefined 已经在 TaskForceView.obj 中定义
- gdi下怎么等待屏幕重直同步
- 请教 win32 sdk下建radio button组
- 64位平台已经到来,32位平台正值壮年,大家正打算开发什么样的程序?
- 在菜单中如何调用对话框
- 仅完成部分的ReadProcessMemory 或WriteProcessMemory请求
- 请教关于DAO不能认识数据库格式?
- 大虾指点:ADO访问SQL数据库不能连接
- 关于动态创建控建的问题,大家帮帮忙
- cab包自动更新问题 求高手指导 在线等急!!!
- 请教SEH的使用
- 向各位高手请教:是否可以在run time时加载 .ocx控件?如果可以,如何加载?
我认为最简单的方法就是通过
OnMouseMove()
OnLButtonDown()
OnLButtonUp()
这几个鼠标消息来自己移动窗口.具体方法就直接看下面的代码好了void CXXXX::OnLButtonDown(UINT nFlags, CPoint point)
{
if(IsInRect(point,&m_TitleRect)) // 如果point在这个拖动窗口的区域内
{
m_bMoveWindow=TRUE;
ClientToScreen(&point); // 这一步非常关键,它将为后面正确的计算提供数据
OldPoint=point;
SetCapture();
}
}void CXXXX::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(m_bMoveWindow)
{
RECT WindowRect;
ClientToScreen(&point); // 同样的,必须得到绝对坐标才能正确的计算窗口的移动
if(point.x==OldPoint.x && point.y==OldPoint.y)
return;
GetWindowRect(&WindowRect);
WindowRect.left+=point.x-OldPoint.x;
WindowRect.right+=point.x-OldPoint.x;
WindowRect.top+=point.y-OldPoint.y;
WindowRect.bottom+=point.y-OldPoint.y;
MoveWindow(&WindowRect);
OldPoint=point;
}
CDialog::OnMouseMove(nFlags, point);
}void CNiceNoteDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_bMoveWindow=FALSE;
ReleaseCapture(); CDialog::OnLButtonUp(nFlags, point);
}