都是书上的例程,VC6.0的,在VC2008中编译通过链接出错ScrollDemoView.obj : error LNK2001: unresolved external symbol "public: static void __cdecl CScrollView::SetScrollSizes(int,struct tagSIZE,struct tagSIZE const &,struct tagSIZE const &)" (?SetScrollSizes@CScrollView@@SAXHUtagSIZE@@ABU2@1@Z)
1>.\Debug/ScrollDemo.exe : fatal error LNK1120: 1 unresolved externals用go to definition发现SetScrollSizes是有4个参数的,后两个貌似也不是默认参数啊,为啥就给出来俩,试着给4个也不行,msdn里头给出的例子:
CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument();
SetScrollSizes(nMapMode, pMyDoc->GetMyDocSize());但是scrolldoc类里头没有getmydocsize的方法啊6.0的程序转到2008下应该都有这个问题吧,发现好几程序用到setscrollsizes的都有折腾好多天了,求达人解答,谢谢

解决方案 »

  1.   

    SetScrollSizes是MFC提供的,通常不会没有。
    检查你的CXXXView 类,确认它是从CScrollView派生来的。
      

  2.   

    void CImageEditView::OnInitialUpdate()
    {
        CScrollView::OnInitialUpdate ();    CString string;
        CSize sizeTotal; CBitmap* pBitmap = GetDocument ()->GetBitmap (); //
    // If a bitmap is loaded, set the view size equal to the bitmap size.
    // Otherwise, set the view's width and height to 0.
    //
        if (pBitmap != NULL) {
            DIBSECTION ds;
            pBitmap->GetObject (sizeof (DIBSECTION), &ds);
            sizeTotal.cx = ds.dsBm.bmWidth;
            sizeTotal.cy = ds.dsBm.bmHeight;
            string.Format (_T ("\t%d x %d, %d bpp"), ds.dsBm.bmWidth,
                ds.dsBm.bmHeight, ds.dsBmih.biBitCount);
        }
        else {
            sizeTotal.cx = sizeTotal.cy = 0;
            string.Empty ();
        }    AfxGetMainWnd ()->SendMessage (WM_USER_UPDATE_STATS, 0,
            (LPARAM) (LPCTSTR) string);
    SetScrollSizes (MM_TEXT, sizeTotal);
    }回楼上的,是从CScrollView派生的啊,是书上的源代码,在vc6.0下编译通过的,好几个类似的用到SetScrollSizes方法的都是这样
      

  3.   

    书上的例子就是mfc程序设计里头第10章,ScrollDemo这个程序
      

  4.   

    CMyScrollDoc* pMyDoc = (CMyScrollDoc*)GetDocument(); 
    SetScrollSizes(nMapMode, pMyDoc->GetMyDocSize());你也是这么写的吗?
      

  5.   

    我把MyScroll改了,nMapMode也改了,不过没有GetMyDocSize这个方法啊
      

  6.   

    void SetScrollSizes(
       int nMapMode,
       SIZE sizeTotal,
       const SIZE& sizePage = sizeDefault,
       const SIZE& sizeLine = sizeDefault 
    );
    后面两个参数有默认值的了,你喜欢也可以改改。
    sizePage 当鼠标在滚动条的条体上单击时,要在水平和垂直方向上滚动的量。cx中存放水平滚动量,cy成员中存放垂直滚动量。  
    sizeLine 当响应鼠标单击滚动条的滚动箭头时要在水平或垂直方向上滚动的量。cx中存放水平滚动量,cy成员中存放垂直滚动量。还有用这个试试
    SetScrollSizes( MM_TEXT, CSize(800, 600) ); 
      

  7.   

    我找了个vs2008里头的例子,代码肯定没问题,也不行,同样的错误,就是diblook那个,是不是我vs设置的问题啊?