#define WIDTHMOVEDLG 4 //拉伸对话框的宽度
//拉伸对话框 CTransparentDlg *m_pMoveDlg; //对话框是否处于可移动状态 BOOL m_bMoveable; //拉伸的起始位置 CPoint m_ptOrigin;//在OnLButtonDown中取值 //模板对话框是否处于移动状态 BOOL m_bDlgMoving; //模板对话框拉伸的类型,1表示从左边拉伸,2表示从右边拉伸,3表示从下面拉伸 int m_nMoveStyle; void C**Dlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //-----以下的程序用于实现对话框的拉伸------///// CRect rect,rectLeft,rectRight,rectDown; GetClientRect(&rect); //设置可移动矩形区域的大小 //左边可移动区域 rectLeft.SetRect( rect.left, rect.top, rect.left+WIDTHMOVEDLG+2, rect.bottom ); //右边可移动区域 rectRight.SetRect( rect.right-WIDTHMOVEDLG-2, rect.top, rect.right, rect.bottom ); //下方可移动区域 rectDown.SetRect( rect.left, rect.bottom-WIDTHMOVEDLG-2, rect.right, rect.bottom ); //从左边拉伸 if (rectLeft.PtInRect(point))//如果鼠标点在左边区域上 { //设置鼠标指针表现形式:指向西东 SetCursor(LoadCursor(NULL,IDC_SIZEWE)); m_bMoveable = TRUE; m_nMoveStyle = 1; } //从右边拉伸 else if (rectRight.PtInRect(point))//如果鼠标点在右边区域上 { //设置鼠标指针表现形式:指向西东 SetCursor(LoadCursor(NULL,IDC_SIZEWE)); m_bMoveable = TRUE; m_nMoveStyle = 2; } //从下方拉伸 else if(rectDown.PtInRect(point))//如果鼠标点在下边区域上 { //设置鼠标指针表现形式:指向南北 SetCursor(LoadCursor(NULL,IDC_SIZENS)); m_bMoveable = TRUE; m_nMoveStyle = 3; } else { m_bMoveable = FALSE; } //移动虚线对话框 ClientToScreen(&point);//客户区域坐标转换成为屏幕区域坐标 int dx,dy; //如果左键已经点击下去 if (m_pMoveDlg && m_bDlgMoving && nFlags == MK_LBUTTON) { //水平方向移动的距离 dx = point.x- m_ptOrigin.x; dy = point.y - m_ptOrigin.y; //竖直方向移动的距离 if (m_nMoveStyle == 1) { m_pMoveDlg -> MoveWindow( rect.left+dx, 101, WIDTHMOVEDLG+2, rect.Height()); } else if (m_nMoveStyle == 2) { CRect rc; GetWindowRect(&rc); int width = point.x - rc.left; if (width <200) { m_pMoveDlg -> MoveWindow( rc.left+194, 101, WIDTHMOVEDLG+2, rect.Height()); } else { m_pMoveDlg -> MoveWindow( rect.right+dx-WIDTHMOVEDLG-2, 101, WIDTHMOVEDLG+2, rect.Height()); } } else if ( 3 == m_nMoveStyle) { CRect rc; GetWindowRect(&rc); int y = point.y - rc.top; if (y >150) { m_pMoveDlg -> MoveWindow( rc.left, rect.bottom+dy-WIDTHMOVEDLG-2, rect.Width(), WIDTHMOVEDLG+2); } else { m_pMoveDlg -> MoveWindow( rc.left, rc.top +150, rect.Width(), WIDTHMOVEDLG+2); } } else { return; } } ////--------------------------------------------//// CDialog::OnMouseMove(nFlags, point); } 创建鼠标指针的风格与样式 HINSTANCE hinst; // handle to current instance HCURSOR hCurs1, hCurs2; // cursor handles // Create a standard cursor. hCurs1 = LoadCursor(NULL, IDC_WAIT); //见附注 // Create a custom cursor based on a resource. hCurs2 = LoadCursor(hinst, MAKEINTRESOURCE(240)); |
|