单文档,删除 "#define _AFX_NO_TRACKER_RESOURCES\r\n"这一行没用,在 3 TEXTINCLUDE 前添加 #undef _AFX_NO_TRACKER_RESOURCES 也没用,在 3 TEXTINCLUDE 后
添加 "#undef _AFX_NO_TRACKER_RESOURCES\r\n"也没用,把"#define _AFX_NO_TRACKER_RESOURCES\r\n"这一行删了再添加#undef _AFX_NO_TRACKER_RESOURCES 也没用,
实在不知道是咋了....
下面是资源文档:
  
3 TEXTINCLUDE 
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
    "\r\n"
    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n"
    "LANGUAGE 4, 2\r\n"
    "#pragma code_page(936)\r\n"
    "#include ""res\\cdra.rc2""  // 非 Microsoft Visual C++ 编辑的资源\r\n"
    "#include ""l.CHS\\afxres.rc""          // 标准组件\r\n"
    "#endif\r\n"
    "\0"
END

解决方案 »

  1.   

    删除了"#define _AFX_NO_TRACKER_RESOURCES\r\n"这一行是有用的.再者就是将系统目录下的光标资源添加入程序中.然后还可以使用:
    extern HCURSOR _afxCursors[10];//引用trckrect.cpp文件中全局光标(静态编译时需要)
    BOOL InitCursor()
    {
    /*原系统
    // Note: all track cursors must live in same module
    HINSTANCE hInst = AfxFindResourceHandle(
    ATL_MAKEINTRESOURCE(AFX_IDC_TRACK4WAY), ATL_RT_GROUP_CURSOR);//RT_GROUP_CURSOR // initialize the cursor array
    _afxCursors[0] = ::LoadCursor(hInst, ATL_MAKEINTRESOURCE(AFX_IDC_TRACKNWSE));
    _afxCursors[1] = ::LoadCursor(hInst, ATL_MAKEINTRESOURCE(AFX_IDC_TRACKNESW));
    _afxCursors[2] = _afxCursors[0];
    _afxCursors[3] = _afxCursors[1];
    _afxCursors[4] = ::LoadCursor(hInst, ATL_MAKEINTRESOURCE(AFX_IDC_TRACKNS));
    _afxCursors[5] = ::LoadCursor(hInst, ATL_MAKEINTRESOURCE(AFX_IDC_TRACKWE));
    _afxCursors[6] = _afxCursors[4];
    _afxCursors[7] = _afxCursors[5];
    _afxCursors[8] = ::LoadCursor(hInst, ATL_MAKEINTRESOURCE(AFX_IDC_TRACK4WAY));
    _afxCursors[9] = ::LoadCursor(hInst, ATL_MAKEINTRESOURCE(AFX_IDC_MOVE4WAY));
    */
    HINSTANCE hInst = AfxGetInstanceHandle(); if (!_afxCursors[0])
    _afxCursors[0] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKNWSE)); if (!_afxCursors[1])
    _afxCursors[1] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKNESW)); if (!_afxCursors[2])
    _afxCursors[2] = _afxCursors[0]; if (!_afxCursors[3])
    _afxCursors[3] = _afxCursors[1]; if (!_afxCursors[4])
    _afxCursors[4] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKNS)); if (!_afxCursors[5])
    _afxCursors[5] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKWE)); if (!_afxCursors[6])
    _afxCursors[6] = _afxCursors[4]; if (!_afxCursors[7])
    _afxCursors[7] = _afxCursors[5]; if (!_afxCursors[8])
    _afxCursors[8] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCK4WAY)); if (!_afxCursors[9])
    _afxCursors[9] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCK4WAY)); return TRUE;
    }不知你是用哪种更好的方法?可以分享下.
      

  2.   

    我在VC6对话框的资源中去除了"#define _AFX_NO_TRACKER_RESOURCES\r\n",还有后面有个定义(搜一下_AFX_NO_TRACKER_RESOURCES)是有效的。
    还有个在2010的OCX中,也是用的静态库,添加#undef _AFX_NO_TRACKER_RESOURCES没有用,后来我自己添加了下代码,也可以解决问题,只是好像图标不太一样,偏大,代码如下:
    BOOL CMoveCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
    {
    return FALSE;
    BOOL bRet = FALSE;
    CPoint point;
    GetCursorPos(&point);
    m_pParent->ScreenToClient(&point);
    int nMoveType = PointInType(point);

    HCURSOR hCursor = NULL;
    if (nMoveType == 4)
    {
    hCursor = LoadCursor(NULL,IDC_SIZEALL);
    }
    else if (0 == nMoveType || 8 == nMoveType)
    {
    hCursor = LoadCursor(NULL,IDC_SIZENWSE);
    }
    else if (2 == nMoveType || 6 == nMoveType)
    {
    hCursor = LoadCursor(NULL,IDC_SIZENESW);
    }
    else if (1 == nMoveType || 7 == nMoveType)
    {
    hCursor = LoadCursor(NULL,IDC_SIZENS);
    }
    else if (3 == nMoveType || 5 == nMoveType)
    {
    hCursor = LoadCursor(NULL,IDC_SIZEWE);
    }

    if (hCursor)
    {
    SetCursor(hCursor);
    return TRUE;
    } return FALSE;
    }
      

  3.   

    代码有误不好意思:
    BOOL CXRectTacker::SetCursor(CWnd* pWnd, UINT nHitTest)
    {
    HCURSOR hCursor = NULL;
    CPoint ptMouse;
    ::GetCursorPos(&ptMouse);
    pWnd->ScreenToClient(&ptMouse);
    int nHitType = HitTest(ptMouse);
    if (hitNothing == nHitType)
    {
    return FALSE;
    }
    if (hitMiddle == nHitType)
    {
    hCursor = LoadCursor(NULL, IDC_SIZEALL);
    }
    else if (hitTopLeft == nHitType || hitBottomRight == nHitType)
    {
    hCursor = LoadCursor(NULL, IDC_SIZENWSE);
    }
    else if (hitBottomLeft == nHitType || hitTopRight == nHitType)
    {
    hCursor = LoadCursor(NULL, IDC_SIZENESW);
    }
    else if (hitTop == nHitType || hitBottom == nHitType)
    {
    hCursor = LoadCursor(NULL, IDC_SIZENS);
    }
    else if (hitLeft == nHitType || hitRight == nHitType)
    {
    hCursor = LoadCursor(NULL, IDC_SIZEWE);
    } if (hCursor)
    {
    ::SetCursor(hCursor);
    return TRUE;
    } return FALSE;
    //return CRectTracker::SetCursor(pWnd, nHitTest); 
    }