J'arrive pas à faire marcher les scroll bars [Win] - Programmation
Marsh Posté le 15-07-2001 à 21:28:45
C'est bon, fallait seulement rajouter des break; dans chaque cas.
Marsh Posté le 16-07-2001 à 11:30:26
Alload a écrit a écrit : C'est bon, fallait seulement rajouter des break; dans chaque cas. |
d'ailleurs les accolades servent à rien il me semble dans les case...
Marsh Posté le 16-07-2001 à 11:39:14
Ca sert à rien les accolades dans un switch->case?
Merde... Je pensais qu'elles jouaient le même rôle que break.
Marsh Posté le 16-07-2001 à 11:41:13
antp a écrit a écrit : d'ailleurs les accolades servent à rien il me semble dans les case... |
Ca peut servir pour déclarer un variable locale mais ça remplace pas le break.
case 1:
{
int i =1;
i++;
}
Marsh Posté le 15-07-2001 à 18:25:58
J'aimerais implémenter des scroll bars dans mon application Win 32, j'ai lu la doc SDK de Microsoft. Ca avait l'air assez simple, mais mon code ne marche pas du tout...
En fait les scroll bars s'affichent, mais leurs positions se remettent remettent toujours à celle par défaut après leur utilisation.
Voilà le code qui me sert pour la barre horizontale:
//Variables globales
SCROLLINFO si;
short nScreenMaxX; //Largeur maximum de la fenêtre en pixel
short nScreenMaxY; //Hauteur maximum de la fenêtre en pixel
short nScrollX = 0; //Position x du scrolling
short nScrollY = 0; //Position y du scrolling
//Code situé dans la fonction traitant les messages Windows
case WM_SIZE:
{
nScreenMaxX = LOWORD(lParam);
nScreenMaxY = HIWORD(lParam);
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
si.nMin = 0;
si.nMax = nScreenMaxX;
si.nPage = 50;
si.nPos = nScrollX;
SetScrollInfo(hWnd, SB_HORZ, &si, true);
si.nMax = nScreenMaxY;
si.nPage = 50;
si.nPos = nScrollY;
SetScrollInfo(hWnd, SB_VERT, &si, true);
InvalidateRect(hWnd, NULL, true);
return 0;
}
case WM_HSCROLL:
{
short nInc;
switch (LOWORD(wParam))
{
case SB_PAGEUP:
{ nInc = si.nPage; }
case SB_PAGEDOWN:
{ nInc = -si.nPage; }
case SB_LINELEFT:
{ nInc = -1; }
case SB_LINERIGHT:
{ nInc = 1; }
case SB_THUMBTRACK:
{ nInc = HIWORD(wParam) - nScrollX; }
default:
{ nInc = 0; }
}
nScrollX += nInc;
si.nPos = nScrollX;
SetScrollInfo(hWnd, SB_HORZ, &si, true);
InvalidateRect(hWnd, NULL, true);
return 0;
}
Mon application reçoit bien le message WM_HSCROLL car la fenêtre est réactualisée par InvalidateRect() à chaque fois que je bouge la barre, mais sinon la scène et la barre ne bouge pas...
Vous voyez le problème? Bien sûr j'ai mis les tags WS_HSCROLL et WS_VSCROLL pour créer ma fenêtre.