我好笨啊,帮帮我啊。。

snakered 2003-08-27 07:52:40
请教各位,如何在windowAPI编程中,让窗口的滚动条动起来啊。
请给我一个简单的例子。如:case WM_VSCROLL; 让滚动条可以动的就行。
谢谢。
...全文
21 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tinybaby 2003-08-27
  • 打赏
  • 举报
回复
^_^,不管是WIN API还是MFC熟知原理永远都不是错。
snakered 2003-08-27
  • 打赏
  • 举报
回复
Thank you, Thank you.我马上去写点东西上去。
kof99 2003-08-27
  • 打赏
  • 举报
回复
WM_PAINT消息就是要写窗口,当然要有内容了,没内容怎么滚?
WM_VSCROLL只是算出一个iVscrollPos值,然后根据这个值决定怎么写东西

snakered 2003-08-27
  • 打赏
  • 举报
回复
case WM_PAINT 没有内容,我没让他显示东西只有BeignPaint and EndPaint两个呀.难倒必须写点东西才动?? 还有上面最后在循环外面那二个句子有什么用啊??
kof99 2003-08-27
  • 打赏
  • 举报
回复
这段没错,看一下 case WM_PAINT:
snakered 2003-08-27
  • 打赏
  • 举报
回复
static int cxChar, cxCaps, cyChar, cyClient, iVscrollPos ;
HDC hdc ;
int i, y ;
PAINTSTRUCT ps ;
TCHAR szBuffer[10] ;
TEXTMETRIC tm ;
switch (message)
{
case WM_CREATE:
hdc = GetDC (hwnd) ;
GetTextMetrics (hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;
cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
cyChar = tm.tmHeight + tm.tmExternalLeading ;

ReleaseDC (hwnd, hdc) ;
SetScrollRange (hwnd, SB_VERT, 0, NUMLINES - 1, FALSE) ;
SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ;
return 0 ;

case WM_SIZE:
cyClient = HIWORD (lParam) ;
return 0 ;

case WM_VSCROLL:
switch (LOWORD (wParam))
{
case SB_LINEUP:
iVscrollPos -= 1 ;
break ;

case SB_LINEDOWN:
iVscrollPos += 1 ;
break ;

case SB_PAGEUP:
iVscrollPos -= cyClient / cyChar ;
break ;

case SB_PAGEDOWN:
iVscrollPos += cyClient / cyChar ;
break ;

case SB_THUMBPOSITION:
iVscrollPos = HIWORD (wParam) ;
break ;

default :
break ;
}

iVscrollPos = max (0, min (iVscrollPos, NUMLINES - 1)) ;
if (iVscrollPos != GetScrollPos (hwnd, SB_VERT))
{
SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ;
InvalidateRect (hwnd, NULL, TRUE) ;
}
return 0 ;

我就贴这段好了.
kof99 2003-08-27
  • 打赏
  • 举报
回复
你看的什么书?
既然把程序写出来了,就贴出来,有错再帮你改
snakered 2003-08-27
  • 打赏
  • 举报
回复
我又不是用MFC类库,我是想用win32API编啊。
noahnoah 2003-08-27
  • 打赏
  • 举报
回复
找好点的书,vc++内幕(潘爱民译)相当不错,好好研究研究,你会有收获的。
snakered 2003-08-27
  • 打赏
  • 举报
回复
我怎么没看,书上又没有代码,七拼八凑的。
我忙了半天,自已把书上也不知道从那儿跑出来的变量定义了。到后来乱七八糟的就没了。最后又来了个什么max(-cypos, min(.....))什么的,反正是看不明白,照书上写一遍,就是滚动条不动,还有你不帮助我还讽刺我,太不应该了。
kof99 2003-08-27
  • 打赏
  • 举报
回复
第一,你没看书就来问
第二,我不觉得我能比书上讲得更清楚
snakered 2003-08-27
  • 打赏
  • 举报
回复
你们拿初学者开涮啊!!没劲。
psprite 2003-08-27
  • 打赏
  • 举报
回复
hehe ~`````高实在是高!
kof99 2003-08-27
  • 打赏
  • 举报
回复
case WM_VSCROLL:
动;
快动;
还不动;
你给我动;
再不动我就....
default:
算了,认真看书,继续学习

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧