各位大虾:下边是 “Emerson2.h"//================================================
// Name: EMERSON2.H#define CM_ABOUT 101
#define CM_DRAWBITMAPS 201
#define CM_BRAHMIN 202
#define CM_WOODNOTES 203
#define CM_SEASHORE 204// Macros
#define max(a,b)    (((a) > (b)) ? (a) : (b))
#define min(a,b)    (((a) < (b)) ? (a) : (b))// The Emerson Class
#define Emerson2_DefProc DefWindowProc
BOOL Emerson2_OnCreate(HWND hwnd, CREATESTRUCT FAR* lpCreateStruct);
void Emerson2_OnDestroy(HWND hwnd);
void Emerson2_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void Emerson2_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags);
void Emerson2_OnPaint(HWND hwnd);
void Emerson2_OnVScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos);// Variables
HBITMAP TheBitmap;// Some Procs
BOOL Register(HINSTANCE hInstance);
BOOL Create(HINSTANCE hInstance, int nCmdShow);
LRESULT CALLBACK WndProc(HWND hWindow, UINT Message, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam);

解决方案 »

  1.   

    Emerson2_OnCreate()中, 你寫的是
    SetScrollRange(hwnd, SB_VERT, 0, MaxLines-Start, FALSE);
    這裡顯然有問題, 因為初值中 MaxLines=21, Start=32,我估計你的意思是應該寫成
    SetScrollRange(hwnd, SB_VERT, 0, MaxLines*TextHeight-Start, FALSE);
      

  2.   

    SetScrollRange(hwnd, SB_VERT, 0, MaxLines - Start, FALSE);
    MaxLines-Start=21-32,滚动范围可以为负的吗?不行吧。  
      

  3.   

    谢谢 SuperChen(兔子)和coolxiao(coolxiao) 的指导
    源书的代码有误,小弟我又刚摸入门,好几天找不到门了!加分!
      

  4.   

    to: SuperChen(兔子) 为何没有加分的按钮,我前两次还见到呢? 
      

  5.   

    小弟给帖子加分未果,只好只给SuperChen(兔子) 加15分
    同时对coolxiao(coolxiao) 表示感谢!