2009-03-07 8 views
1

Chaque programme a la barre de défilement au-dessus de la barre d'état. Droite? Eh bien, pas le mien.Comment faire pour déplacer la barre de défilement par défaut de la fenêtre au-dessus de la barre d'état?

Lorsque j'ai essayé d'installer mes propres barres de défilement dans mon programme, je les ai étonnamment fait fonctionner! J'ai donc réussi à faire fonctionner la barre d'état! Hourra! :-) ... Mais la barre d'état est AU-DESSUS de la barre de défilement, quand elle devrait être sous la barre de défilement. Comment déplacer la barre de défilement? Je ne pouvais pas trouver de fonctions sur le déplacement de la barre de défilement. à moins que je ne crée moi-même une barre de défilement, mais cela ne marche pas très bien (). Il y avait un bug bizarre: quand j'utilisais la hauteur par défaut, la barre de défilement devenait complètement invisible et la barre de défilement o_O)

Voici mon code à barres de création d'état:

// Create status bar 
hStatus = CreateWindowEx(
    0, 
    STATUSCLASSNAME, 
    NULL, 
    WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 
    0, 0, 0, 0, 
    hWnd, 
    (HMENU)IDC_MAIN_STATUS, 
    GetModuleHandle(NULL), 
    NULL 
); 

et la création de la fenêtre:

if (!(hWnd=CreateWindowEx(dwExStyle,   // Extended Style For The Window 
    "OpenGL",     // Class Name 
    title,      // Window Title 
    dwStyle |     // Defined Window Style 
    WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | 
    WS_CLIPCHILDREN | WM_HSCROLL | WM_VSCROLL, // Required Window Style 
    0, 0,      // Window Position 
    WindowRect.right-WindowRect.left,  // Calculate Window Width 
    WindowRect.bottom-WindowRect.top,  // Calculate Window Height 
    NULL,      // No Parent Window 
    NULL,      // No Menu 
    hInstance,     // Instance 
    NULL)))      // Dont Pass Anything To WM_CREATE 

Il doit y avoir une astuce que je nai encore réalisé, tout le monde Enli Ghten moi sur la façon de le faire correctement?

Répondre

2

Exécutez le bloc-notes et inspectez-le avec spy ++ et vous verrez la zone avec la barre de défilement et la barre d'état sont deux fenêtres homologues avec un parent commun. Vous devez également faire cela, puis utilisez SetWindowPos() pour positionner vos deux fenêtres les unes par rapport aux autres chaque fois que votre fenêtre parent change de taille ou de position.

Questions connexes