SDK编程。为什么SetScrollPos无法响SB_THUMBTRACK、SB_THUMBPOSITION?请各位朋友帮帮小弟我
SDK编程。为什么SetScrollPos无法响SB_THUMBTRACK、SB_THUMBPOSITION?请各位朋友帮帮我!
#include <windows.h>
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=NULL;
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinSunProc;
wndclass.lpszClassName= "Windows ";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow( "Windows ", "WindowsApp ",WS_OVERLAPPEDWINDOW,
0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
//
HWND hScrlV,hScrlH;
HINSTANCE hinstance;
int iMax,iMin,iHPos,iVPos;
//
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CREATE:
//建立水平滚动条
hScrlH=CreateWindow( "SCROLLBAR ",NULL,
WS_CHILD|WS_VISIBLE|SBS_HORZ,
70,40,200,20,hwnd,(HMENU)0,hinstance,0);
//建立垂直滚动条
hScrlV=CreateWindow( "SCROLLBAR ",NULL,
WS_CHILD|WS_VISIBLE|SBS_VERT,
20,10,20,150,hwnd,(HMENU)0,hinstance,0);
//设置大小
SetScrollRange(hScrlV,SB_CTL,0,100,TRUE);//设置垂直
SetScrollRange(hScrlH,SB_CTL,0,100,TRUE);//设置水平
//初始位置
SetScrollPos(hScrlV,SB_CTL,iVPos,TRUE);//设置垂直
SetScrollPos(hScrlH,SB_CTL,iHPos,TRUE);//设置水平
break;
case WM_HSCROLL:
if(HIWORD(wParam)==0) //如果是水平滚动条
{
switch(LOWORD(wParam))//标识着动作
{
case SB_LINELEFT:
iHPos--;
break;
case SB_LINERIGHT:
iHPos++;
break;
case SB_PAGELEFT:
iHPos-=10;
break;
case SB_PAGERIGHT:
iHPos+=10;
break;
case SB_THUMBTRACK:
iHPos=HIWORD(wParam);
break;
case SB_THUMBPOSITION:
iHPos=HIWORD(wParam);
break;
default: break;
}
SetScrollPos(hScrlH,SB_CTL,iHPos,TRUE);
}
break;
case WM_VSCROLL:
if(HIWORD(wParam)==0)//设为同一类的
{
switch(LOWORD(wParam))
{
case SB_LINEUP:
iVPos--;
break;
case SB_LINEDOWN:
iVPos++;
break;
case SB_PAGEUP:
iVPos-=5;
break;
case SB_PAGEDOWN:
iVPos+=5;
break;
default: break;
}
SetScrollPos(hScrlV,SB_CTL,iVPos,TRUE);
#include <windows.h>
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=NULL;
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinSunProc;
wndclass.lpszClassName= "Windows ";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow( "Windows ", "WindowsApp ",WS_OVERLAPPEDWINDOW,
0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
//
HWND hScrlV,hScrlH;
HINSTANCE hinstance;
int iMax,iMin,iHPos,iVPos;
//
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CREATE:
//建立水平滚动条
hScrlH=CreateWindow( "SCROLLBAR ",NULL,
WS_CHILD|WS_VISIBLE|SBS_HORZ,
70,40,200,20,hwnd,(HMENU)0,hinstance,0);
//建立垂直滚动条
hScrlV=CreateWindow( "SCROLLBAR ",NULL,
WS_CHILD|WS_VISIBLE|SBS_VERT,
20,10,20,150,hwnd,(HMENU)0,hinstance,0);
//设置大小
SetScrollRange(hScrlV,SB_CTL,0,100,TRUE);//设置垂直
SetScrollRange(hScrlH,SB_CTL,0,100,TRUE);//设置水平
//初始位置
SetScrollPos(hScrlV,SB_CTL,iVPos,TRUE);//设置垂直
SetScrollPos(hScrlH,SB_CTL,iHPos,TRUE);//设置水平
break;
case WM_HSCROLL:
if(HIWORD(wParam)==0) //如果是水平滚动条
{
switch(LOWORD(wParam))//标识着动作
{
case SB_LINELEFT:
iHPos--;
break;
case SB_LINERIGHT:
iHPos++;
break;
case SB_PAGELEFT:
iHPos-=10;
break;
case SB_PAGERIGHT:
iHPos+=10;
break;
case SB_THUMBTRACK:
iHPos=HIWORD(wParam);
break;
case SB_THUMBPOSITION:
iHPos=HIWORD(wParam);
break;
default: break;
}
SetScrollPos(hScrlH,SB_CTL,iHPos,TRUE);
}
break;
case WM_VSCROLL:
if(HIWORD(wParam)==0)//设为同一类的
{
switch(LOWORD(wParam))
{
case SB_LINEUP:
iVPos--;
break;
case SB_LINEDOWN:
iVPos++;
break;
case SB_PAGEUP:
iVPos-=5;
break;
case SB_PAGEDOWN:
iVPos+=5;
break;
default: break;
}
SetScrollPos(hScrlV,SB_CTL,iVPos,TRUE);