case SB_THUMBPOSITION: 究竟错在那里
tjsch 2008-10-12 10:04:39 我在程序中用到了一个对话框其中放了三个滚动条控件,其他都没问题,不过只要滚动条一拖动它就会跑到滚动条的顶端请问这是怎么回事呀.
BOOL CALLBACK quadraticxishuandgraphproc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{static HWND hparent,hctri;
static HINSTANCE hinstance;
static int inttemp,atemp,btemp,ctemp; //atemp btemp ctemp 用于临时纪录阿a b c 的当前值
static int ictriid,i;
TCHAR chartemp[20];
static float x;
static HWND hbutton;
switch(message)
{
case WM_CLOSE:
EndDialog(hwnd,FALSE);
return 0;
break;
case WM_INITDIALOG:
hparent=GetParent(hwnd); //获取父窗口句柄
hinstance=(HINSTANCE)GetWindowLong(hparent,GWL_HINSTANCE); //获取实例句柄
btemp=0;
hctri=GetDlgItem(hwnd,IDC_SCROLLBARQUADRATICA);//用于临时设置滚动条范围和当前位置
SetScrollRange(hctri,SB_CTL,-100,100,FALSE);
SetScrollPos(hctri,SB_CTL,1,FALSE);
hctri=GetDlgItem(hwnd,IDC_SCROLLBARQUADRATICB);
SetScrollRange(hctri,SB_CTL,-100,100,FALSE);
SetScrollPos(hctri,SB_CTL,0,FALSE);
hctri=GetDlgItem(hwnd,IDC_SCROLLBARQUADRATICC);
SetScrollRange(hctri,SB_CTL,-100,100,FALSE);
SetScrollPos(hctri,SB_CTL,0,FALSE);
return TRUE;
case WM_VSCROLL: //发出滚动条消息
ictriid=GetWindowLong((HWND)lparam,GWL_ID); //获取发出消息的控件id
inttemp=0; //用于记录滚动条位置
switch(LOWORD(wparam))
{
case SB_PAGEDOWN:
inttemp-=15;
break;
case SB_LINEDOWN:
inttemp-=1;
break;
case SB_LINEUP:
inttemp+=1;
break;
case SB_PAGEUP:
inttemp+=15;
break;
case SB_TOP:
inttemp=100;
break;
case SB_BOTTOM:
inttemp=-100;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
inttemp=HIWORD(wparam);
break;
default:
return FALSE;
}
各位高手帮忙看一看上面的代码究竟错在那里,谢谢