[win32/c++]schuifbalk doet het niet goed

Pagina: 1
Acties:

  • hutmannetje
  • Registratie: April 2001
  • Laatst online: 02-09 17:00
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:
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) ;
     }

Verwijderd

[/code]

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

titel aangepast :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

(Je bedoelt met schuifbalk toch wel scrollbar he, want ik zat eerst te denken aan een slider)

Ten eerste zie ik dat de bij 'SetScrollRange' (in WM_CREATE) gezet wordt op 0 tot 2. Is dat niet een beetje weinig? Of wordt het ergens anders aangepast.

Kijk eens in de debugger of WM_VSCROLL wordt aangeroepen als je schuift.

Zie je text ook scrollen en dan 'half verdwijnen' of scrollt er helemaal niets?

  • hutmannetje
  • Registratie: April 2001
  • Laatst online: 02-09 17:00
ja dat is het probleem. De tekst scrollt wel een beetje en verdwijnt half en andere regels blijven onderin staan.

  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

Dan is je tekenfunctie niet goed... Waarschijnlijk die 'EdrCenterText'

  • hutmannetje
  • Registratie: April 2001
  • Laatst online: 02-09 17:00
bedankt, ik zal er effies naar kijken
Pagina: 1