#define WIDTHMOVEDLG 4 //拉伸對話框的寬度
//拉伸對話框
CTransparentDlg *m_pMoveDlg;
//對話框是否處于可移動狀態(tài)
BOOL m_bMoveable;
//拉伸的起始位置
CPoint m_ptOrigin;//在OnLButtonDown中取值
//模板對話框是否處于移動狀態(tài)
BOOL m_bDlgMoving;
//模板對話框拉伸的類型,1表示從左邊拉伸,2表示從右邊拉伸,3表示從下面拉伸
int m_nMoveStyle;
void C**Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值
//-----以下的程序用于實現(xiàn)對話框的拉伸------/////
CRect rect,rectLeft,rectRight,rectDown;
GetClientRect(&rect);
//設(shè)置可移動矩形區(qū)域的大小
//左邊可移動區(qū)域
rectLeft.SetRect(
rect.left,
rect.top,
rect.left+WIDTHMOVEDLG+2,
rect.bottom
);
//右邊可移動區(qū)域
rectRight.SetRect(
rect.right-WIDTHMOVEDLG-2,
rect.top,
rect.right,
rect.bottom
);
//下方可移動區(qū)域
rectDown.SetRect(
rect.left,
rect.bottom-WIDTHMOVEDLG-2,
rect.right,
rect.bottom
);
//從左邊拉伸
if (rectLeft.PtInRect(point))//如果鼠標(biāo)點在左邊區(qū)域上
{
//設(shè)置鼠標(biāo)指針表現(xiàn)形式:指向西東
SetCursor(LoadCursor(NULL,IDC_SIZEWE));
m_bMoveable = TRUE;
m_nMoveStyle = 1;
}
//從右邊拉伸
else if (rectRight.PtInRect(point))//如果鼠標(biāo)點在右邊區(qū)域上
{
//設(shè)置鼠標(biāo)指針表現(xiàn)形式:指向西東
SetCursor(LoadCursor(NULL,IDC_SIZEWE));
m_bMoveable = TRUE;
m_nMoveStyle = 2;
}
//從下方拉伸
else if(rectDown.PtInRect(point))//如果鼠標(biāo)點在下邊區(qū)域上
{
//設(shè)置鼠標(biāo)指針表現(xiàn)形式:指向南北
SetCursor(LoadCursor(NULL,IDC_SIZENS));
m_bMoveable = TRUE;
m_nMoveStyle = 3;
}
else
{
m_bMoveable = FALSE;
}
//移動虛線對話框
ClientToScreen(&point);//客戶區(qū)域坐標(biāo)轉(zhuǎn)換成為屏幕區(qū)域坐標(biāo)
int dx,dy;
//如果左鍵已經(jīng)點擊下去
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);
}
創(chuàng)建鼠標(biāo)指針的風(fēng)格與樣式
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));
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。