hgcn1983
路人甲
路人甲
  • 注册日期2005-04-09
  • 发帖数3
  • QQ
  • 铜币111枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2168回复:6

[求助]mo+vb开发中的问题,用类模块dragFeedback时出现“用户定义类型未定义”的错误

楼主#
更多 发布于:2005-04-17 15:22
<P>我在程序中添加了两个map窗口,用小窗口map2来实现指示大窗口的活动,</P>
<P>在小窗口上添加一个红色指示框,代码如下:</P>
<P>Private Sub Map2_AfterTrackingLayerDraw(ByVal hDC As StdOle.OLE_HANDLE)
  Dim sym As New Symbol
  sym.OutlineColor = moRed
  sym.Style = moTransparentFill
  Map2.DrawShape Map1.Extent, sym
End Sub</P>
<P>现在,我想要实现在map2窗口里拖动这个红色方框,用了mo提供的类模块dragFeedback,代码如下:</P>
<P>Option Explicit
Dim g_feedback As DragFeedback</P>
<P>Private Sub Map2_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  '将点击转换为Map2上的点对象;
  Dim p As Point
  Set p = Map2.ToMapPoint(x, y)
  
  '如果点击发生在方框内,开始拖动;
  If Map1.Extent.IsPointIn(p) Then
    Set g_feedback = New DragFeedback
    g_feedback.DragStart Map1.Extent, Map2, x, y
  End If
End Sub</P>
<P>'开始拖动方框
Private Sub Map2_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  If Not g_feedback Is Nothing Then
    g_feedback.DragMove x, y
  End If
End Sub</P>
<P>'拖动完成,并在Map1中显示新位置;
Private Sub Map2_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  If Not g_feedback Is Nothing Then
    Map1.Extent = g_feedback.DragFinish(x, y)
    Set g_feedback = Nothing
  End If
End Sub</P>
<P>结果在调试的时候却提示Dim g_feedback As DragFeedback这行用户定义类型未定义!~</P>
<P>请问应该怎么解决啊?</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-04-17 17:01
改:Dim g_feedback As new DragFeedback看看
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
hgcn1983
路人甲
路人甲
  • 注册日期2005-04-09
  • 发帖数3
  • QQ
  • 铜币111枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-04-18 23:20
<P>还是不可以</P><P>提示也是同样的</P>
举报 回复(0) 喜欢(0)     评分
kinderboy
路人甲
路人甲
  • 注册日期2004-11-21
  • 发帖数10
  • QQ
  • 铜币145枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-09-26 09:26
<P>我也遇到了这样的问题,如何解决呢?</P>
<P>看书好像要添加一个类模块,如何添加呢?</P>
<P>在线等,2006-09-26</P>
举报 回复(0) 喜欢(0)     评分
cxj0512
路人甲
路人甲
  • 注册日期2006-04-04
  • 发帖数15
  • QQ
  • 铜币156枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2007-04-24 18:10
<P>需要添加一个类模块,源代码如下:</P>
<P>Private Declare Function GdiRectangle Lib "gdi32" Alias "Rectangle" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long<BR>Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long<BR>Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long<BR>Private Declare Function SetROP2 Lib "gdi32" (ByVal hdc As Long, ByVal nDrawMode As Long) As Long<BR>Private Const R2_NOTXORPEN = 10</P>
<P>' glogal map<BR>Dim m_map As MapObjects2.Map</P>
<P>' variables that keep track of moving the indicator<BR>Dim m_hDC As Long         ' a DC to draw into<BR>Dim m_hWnd As Long        ' window handle<BR>Dim m_xMin As Integer, m_yMin As Integer  ' drag indicator<BR>Dim m_xMax As Integer, m_yMax As Integer  ' drag indicator<BR>Dim m_xPrev As Integer       ' click location<BR>Dim m_yPrev As Integer       ' click location</P>
<P>Function DragFinish(x As Single, y As Single) As MapObjects2.Rectangle<BR>  GdiRectangle m_hDC, m_xMin, m_yMin, m_xMax, m_yMax<BR>  ReleaseDC m_hWnd, m_hDC<BR>  <BR>  ' return the rectangle<BR>  Dim r As New MapObjects2.Rectangle<BR>  PixelsRectToMap m_xMin, m_yMin, m_xMax, m_yMax, r<BR>  Set DragFinish = r<BR>End Function</P>
<P>Sub DragMove(x As Single, y As Single)<BR>  ' convert to pixels<BR>  xNext = m_map.Parent.ScaleX(x, vbTwips, vbPixels)<BR>  yNext = m_map.Parent.ScaleY(y, vbTwips, vbPixels)<BR>    <BR>  GdiRectangle m_hDC, m_xMin, m_yMin, m_xMax, m_yMax<BR>  m_xMin = m_xMin + (xNext - m_xPrev)<BR>  m_xMax = m_xMax + (xNext - m_xPrev)<BR>  m_yMin = m_yMin + (yNext - m_yPrev)<BR>  m_yMax = m_yMax + (yNext - m_yPrev)<BR>  <BR>  GdiRectangle m_hDC, m_xMin, m_yMin, m_xMax, m_yMax<BR>  m_xPrev = xNext<BR>  m_yPrev = yNext<BR>End Sub</P>
<P>Sub DragStart(rect As MapObjects2.Rectangle, Map As MapObjects2.Map, x As Single, y As Single)<BR>  Set m_map = Map<BR>    ' initialize the hwnd and hdc variables<BR>  m_hWnd = m_map.hwnd<BR>  m_hDC = GetDC(m_hWnd)<BR>  SetROP2 m_hDC, R2_NOTXORPEN   ' raster op for inverting<BR>    <BR>  MapRectToPixels rect, m_xMin, m_yMin, m_xMax, m_yMax<BR>  <BR>  ' draw the rectangle<BR>  GdiRectangle m_hDC, m_xMin, m_yMin, m_xMax, m_yMax<BR>  <BR>  ' remember the click position<BR>  ' convert to pixels<BR>  m_xPrev = m_map.Parent.ScaleX(x, vbTwips, vbPixels)<BR>  m_yPrev = m_map.Parent.ScaleY(y, vbTwips, vbPixels)<BR>End Sub</P>
<P>Private Sub MapRectToPixels(r As MapObjects2.Rectangle, xMin As Integer, yMin As Integer, xMax As Integer, yMax As Integer)<BR>  Dim p As New Point<BR>  Dim xc As Single, yc As Single<BR>  <BR>  p.x = r.Left<BR>  p.y = r.Top<BR>  m_map.FromMapPoint p, xc, yc<BR>  <BR>  ' convert to pixels<BR>  xMin = m_map.Parent.ScaleX(xc, vbTwips, vbPixels)<BR>  yMin = m_map.Parent.ScaleY(yc, vbTwips, vbPixels)</P>
<P>  p.x = r.Right<BR>  p.y = r.Bottom<BR>  m_map.FromMapPoint p, xc, yc<BR>  <BR>  ' convert to pixels<BR>  xMax = m_map.Parent.ScaleX(xc, vbTwips, vbPixels)<BR>  yMax = m_map.Parent.ScaleY(yc, vbTwips, vbPixels)<BR>End Sub</P>
<P>Sub PixelsRectToMap(xMin As Integer, yMin As Integer, xMax As Integer, yMax As Integer, r As MapObjects2.Rectangle)<BR>  Dim xc As Single, yc As Single<BR>  <BR>  ' convert to twips<BR>  xc = m_map.Parent.ScaleX(xMin, vbPixels, vbTwips)<BR>  yc = m_map.Parent.ScaleY(yMin, vbPixels, vbTwips)<BR>  <BR>  Set p = m_map.ToMapPoint(xc, yc)<BR>  r.Left = p.x<BR>  r.Top = p.y</P>
<P>  ' convert to twips<BR>  xc = m_map.Parent.ScaleX(xMax, vbPixels, vbTwips)<BR>  yc = m_map.Parent.ScaleY(yMax, vbPixels, vbTwips)<BR>  Set p = m_map.ToMapPoint(xc, yc)<BR>  r.Right = p.x<BR>  r.Bottom = p.y<BR>End Sub</P>
<P>我运行过了,可以用的!</P>
举报 回复(0) 喜欢(0)     评分
dly918
路人甲
路人甲
  • 注册日期2007-01-28
  • 发帖数7
  • QQ
  • 铜币126枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2007-05-05 17:41
<P>在安装mo时有个例子里有这个类模块,可以直接添加进去,就可以了,不过我运行的时候出了个问题,到现在还没解决,就是g_feedback.dragmove x,y这个老出问题,不过在其它地方又是好的,唉,就那个软件开发不行,这是生气啊 </P>
举报 回复(0) 喜欢(0)     评分
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2007-05-05 21:25
加油
举报 回复(0) 喜欢(0)     评分
游客

返回顶部