#include <afxwin.h>
#include<windows.h>
#include<math.h>
class CMyApp : public CWinApp
{
public:
    virtual BOOL InitInstance ();
};class CMainWindow : public CFrameWnd
{
public:
    CMainWindow (); int n;
protected:
    afx_msg void OnPaint ();
afx_msg int OnCreate(LPCREATESTRUCT);
afx_msg void OnLButtonDown(UINT,CPoint);
afx_msg void OnNcPaint();
afx_msg void OnVScroll(UINT,UINT,CScrollBar*);
afx_msg void OnSize(UINT,int,int);
afx_msg void OnLButtonUp(UINT,CPoint);
afx_msg void OnRButtonDown(UINT,CPoint);
afx_msg void OnMouseMove(UINT nFlags,CPoint point );    DECLARE_MESSAGE_MAP ()
};CMyApp myApp;
BOOL CMyApp::InitInstance ()
{
    m_pMainWnd = new CMainWindow;
    m_pMainWnd->ShowWindow (m_nCmdShow);
    m_pMainWnd->UpdateWindow ();
    return TRUE;
}
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_CREATE()
    ON_WM_PAINT ()
ON_WM_LBUTTONDOWN()
ON_WM_SIZE()
ON_WM_VSCROLL()
ON_WM_LBUTTONUP()
ON_WM_RBUTTONDOWN()
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP ()CMainWindow::CMainWindow ()
{
    Create (NULL, _T ("The Hello Application"),WS_OVERLAPPEDWINDOW | WS_VSCROLL );
}void CMainWindow::OnPaint ()
{  CPaintDC dc (this);
  CBrush brush(RGB(255,0,0));
  dc.SelectObject (&brush);
  static int x=0;
 dc.Rectangle (x,n,x+100,n+100);
}
void CMainWindow::OnLButtonDown (UINT,CPoint a)
{
}
void CMainWindow::OnVScroll(UINT code,UINT pos,CScrollBar*)
{
        
if(code==SB_LINEDOWN)
{
SCROLLINFO si;
si.fMask = SIF_POS;
GetScrollInfo(SB_VERT, &si);
si.nPos =si.nPos +10;
si.fMask = SIF_POS;
SetScrollInfo(SB_VERT, &si,TRUE);
n=si.nPos ;
}
else if(code==SB_LINEUP)
{
SCROLLINFO si;
si.fMask = SIF_POS ;
GetScrollInfo(SB_VERT, &si);
si.nPos =si.nPos -10;
si.fMask = SIF_POS;
SetScrollInfo(SB_VERT, &si,TRUE);
n=si.nPos ;
}
Invalidate(1);
UpdateWindow();}void CMainWindow::OnSize (UINT type ,int cx ,int cy)
{
SCROLLINFO si;
si.fMask =SIF_PAGE | SIF_POS | SIF_RANGE;
si.nPage =cy;
si.nPos =n;
si.nMax =100;
si.nMin =0;
SetScrollInfo(SB_VERT,&si,1);

}
void CMainWindow::OnLButtonUp (UINT,CPoint b)
{
}
void CMainWindow::OnRButtonDown (UINT,CPoint a)
{
}
int CMainWindow::OnCreate (LPCREATESTRUCT)
{
/* SCROLLINFO si;
        si.fMask = SIF_ALL;
        si.nMin = 0;
        si.nMax = 100;
        si.nPos = 0;
        si.nPage = 25;
        SetScrollInfo(SB_VERT,&si,true);
*/
return 0;
}
void CMainWindow::OnMouseMove(UINT nFlags,CPoint point )
{

}
让滚动条出来,然后小方框成比例。
当小方框在最面时,客户区的红色矩形的底边也要在最下面。
当小方框在最面时,客户区的红色矩形的顶边也要在最上面。请各位回复代码的时候告诉我你想在哪修改的,要不我就晕了,谢谢

解决方案 »

  1.   

    复制到vc里,编译提示如下:
    --------------------Configuration: test1014 - Win32 Debug--------------------
    Linking...
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    Debug/test1014.exe : fatal error LNK1120: 2 unresolved externals
    执行 link.exe 时出错.新手一个,我也不懂是什么情况