你的信箱([email protected])我发不过去,你有MSDN吗?如有,找一个叫tracker的例子
\s(amples\VC98\mfc\general\tracker)
\s(amples\VC98\mfc\general\tracker)
解决方案 »
- 重装win8以后IE还犯病了
- GetWindowText和SetWindowTextW以及SetWindowText
- 在多线程里面EnterCriticalSection?
- fopen的"w+"和"a+"对文件权限有不同的要求吗?
- 討論:關於 IOCP 中,該不該對同一個 socket 投遞多個 WSARecv ??? 這樣會提高效率嗎?我想聽聽大家的意見
- 一个关于字体的问题!
- 发一些游戏的演示程序
- 我疯了,数据库能连上,也能去记录什么的,但执行语句时会出现异常,为什么??
- 打印预览正确,怎么打印的时候页数无穷不能停下来啊?
- 我在开发winCE下的html程序,只有一个html解释并显示控件,但没有htmlview ,htmldoc我怎么写这两个类?
- 婓涴爵珂郅賸ㄛ睡婓怀楊笢怀堤Unicode犖趼ˋ
- zip的压缩算法是基于最优树理论吗?
{
m_bLButtonDown=TRUE;
m_OldPoint=point;
m_OldMovePoint=point;
SetCapture();
COleControl::OnLButtonDown(nFlags, point);
}void CHugoMapXCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bLButtonDown=FALSE;
ReleaseCapture();
m_bZoomRect=FALSE;
COleControl::OnLButtonUp(nFlags, point);
}void CHugoMapXCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bLButtonDown)
{
HWND hWnd=(HWND)GetHwnd();
HDC hdc=::GetDC(hWnd);
CDC cdc;
cdc.Attach(hdc);
SIZE size;
size.cx=1;
size.cy=1;
if (m_OldPoint != point)
{
CRect newRect(min(m_OldPoint.x,point.x),
min(m_OldPoint.y,point.y),
max(m_OldPoint.x,point.x),
max(m_OldPoint.y,point.y));
CRect oldRect(min(m_OldPoint.x,m_OldMovePoint.x),
min(m_OldPoint.y,m_OldMovePoint.y),
max(m_OldPoint.x,m_OldMovePoint.x),
max(m_OldPoint.y,m_OldMovePoint.y)); cdc.DrawDragRect(&newRect,size,&oldRect,size,NULL,NULL);
m_ZoomRect=newRect;
m_bZoomRect=TRUE;
}
cdc.Detach(); m_OldMovePoint=point;
}
COleControl::OnMouseMove(nFlags, point);
}
{
m_bLButtonDown=TRUE;
m_OldPoint=point;
m_OldMovePoint=point;
SetCapture();
COleControl::OnLButtonDown(nFlags, point);
}void CHugoMapXCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bLButtonDown=FALSE;
ReleaseCapture();
m_bZoomRect=FALSE;
COleControl::OnLButtonUp(nFlags, point);
}void CHugoMapXCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bLButtonDown)
{
HWND hWnd=(HWND)GetHwnd();
HDC hdc=::GetDC(hWnd);
CDC cdc;
cdc.Attach(hdc);
if (m_OldPoint != point)
{
CRect newRect(min(m_OldPoint.x,point.x),
min(m_OldPoint.y,point.y),
max(m_OldPoint.x,point.x),
max(m_OldPoint.y,point.y));
CRect oldRect(min(m_OldPoint.x,m_OldMovePoint.x),
min(m_OldPoint.y,m_OldMovePoint.y),
max(m_OldPoint.x,m_OldMovePoint.x),
max(m_OldPoint.y,m_OldMovePoint.y)); cdc.DrawDragRect(&newRect,size,&oldRect,size,NULL,NULL);
m_ZoomRect=newRect;
m_bZoomRect=TRUE;
}
cdc.Detach(); m_OldMovePoint=point;
}
COleControl::OnMouseMove(nFlags, point);
}
{
m_bLButtonDown=TRUE;
m_OldPoint=point;
m_OldMovePoint=point;
SetCapture();
COleControl::OnLButtonDown(nFlags, point);
}void CHugoMapXCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bLButtonDown=FALSE;
ReleaseCapture();
m_bZoomRect=FALSE;
COleControl::OnLButtonUp(nFlags, point);
}void CHugoMapXCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bLButtonDown)
{
HWND hWnd=(HWND)GetHwnd();
HDC hdc=::GetDC(hWnd);
CDC cdc;
cdc.Attach(hdc);
SIZE size;
size.cx=1;
size.cy=1;
if (m_OldPoint != point)
{
CRect newRect(min(m_OldPoint.x,point.x),
min(m_OldPoint.y,point.y),
max(m_OldPoint.x,point.x),
max(m_OldPoint.y,point.y));
CRect oldRect(min(m_OldPoint.x,m_OldMovePoint.x),
min(m_OldPoint.y,m_OldMovePoint.y),
max(m_OldPoint.x,m_OldMovePoint.x),
max(m_OldPoint.y,m_OldMovePoint.y)); cdc.DrawDragRect(&newRect,size,&oldRect,size,NULL,NULL);
m_ZoomRect=newRect;
m_bZoomRect=TRUE;
}
cdc.Detach(); m_OldMovePoint=point;
}
COleControl::OnMouseMove(nFlags, point);
}
如果你用CDC::DrawDragRect的话,摸去上次的虚线框是自动做的,所以你只要在OnLButtonDown,OnMouseMove,OnLButtonUp里直接call CDC::DrawDragRect 画当前的矩形就行了
Dim clipR As RECT, clipP As POINTAPI
If Button And vbLeftButton Then
'The first corner of the rectangle is recorded in the viewX1
'and dviewY1 variables. The other corner is set to the same point.
dviewX1! = X
dviewY1! = Y
dviewX2! = dviewX1!
dviewY2! = dviewY1!
'Clip the cursor to the picture control: 'Get the SCREEN coordinates of the form's origin
clipP.X = 0
clipP.Y = 0
dummy& = ClientToScreen(Me.hWnd, clipP)
'Set the clip rectangle
clipR.Top = pctScreen.Top + clipP.Y ' Top of pctScreen + top of form
clipR.Left = pctScreen.Left + clipP.X ' left of pctScreen + left of form, etc.
clipR.Right = pctScreen.Left + pctScreen.Width + clipP.X
clipR.Bottom = pctScreen.Top + pctScreen.Height + clipP.Y
dummy& = ClipCursor&(clipR) ' Clip the cursor to the clipR rectangle
End If
End Sub
Private Sub pctScreen_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button And vbLeftButton Then ' If the button is down then
'Draw mode is XOR. We will draw a second box in the place of the
'previous one, erasing it.
pctScreen.Line (dviewX1!, dviewY1!)-(dviewX2!, dviewY2!), QBColor(10), B ' Record where we are.
dviewX2! = X
dviewY2! = Y
'Draw a dotted box to simulate a dragging rectangle
pctScreen.Line (dviewX1!, dviewY1!)-(dviewX2!, dviewY2!), QBColor(10), B
End If
End Sub
Private Sub pctScreen_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Unclip the cursor
dummy& = ClipCursorBynum&(0&)
'If any of the box's dimensions are 0, then quit
If dviewX1 = dviewX2 Or dviewY1 = dviewY2 Then Exit Sub
'Erase the box from the screen by re-drawing it.
pctScreen.Line (dviewX1!, dviewY1!)-(dviewX2!, dviewY2!), QBColor(10), B
'Set the Viewport Variables to the box dimensions
viewOrgX& = CLng(dviewX1!)
viewOrgY& = CLng(dviewY1!)
viewExtX& = CLng(dviewX2!) - CLng(dviewX1!)
viewExtY& = CLng(dviewY2!) - CLng(dviewY1!)
'Redraw the screen.
pctScreen.Refresh
End Sub