ik zit met visual c++ bezig. Maar de schuifbalk van mijn gemaakte progje werkt niet goed.
Het programma hoeft alleen een lap tekst te laten zien, en met de schuifbalk kan je dan doorlezen. De balk doet het wel, alleen krijg je alleen he begin van de tekst te zien. De tekst wil dus niet doorschuifen.
de fout zit ergens in de wndproc.
Hier is de code:
Het programma hoeft alleen een lap tekst te laten zien, en met de schuifbalk kan je dan doorlezen. De balk doet het wel, alleen krijg je alleen he begin van de tekst te zien. De tekst wil dus niet doorschuifen.
de fout zit ergens in de wndproc.
Hier is de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static int cxChar, cxCaps, cyChar, cyClient, iVscrollPos ;
HDC hdc ;
int i, y ;
PAINTSTRUCT ps ;
TEXTMETRIC tm ;
switch (iMsg)
{
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, 2, 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 ;
case SB_THUMBTRACK:
iVscrollPos = LOWORD (wParam);
break;
default :
break ;
}
iVscrollPos = max (0, min (iVscrollPos, 2)) ;
if (iVscrollPos != GetScrollPos (hwnd, SB_VERT))
{
SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ;
InvalidateRect (hwnd, NULL, TRUE) ;
}
return 0 ;
case WM_PAINT :
hdc = BeginPaint (hwnd, &ps);
y = cyChar * (1 - iVscrollPos + i) ;
EdrCenterText(hdc);// verwijst naar ander bestand waarin de tekst instaat.
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
} |