IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Fenetre sans Scroll Bar


Sujet :

MFC

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Fenetre sans Scroll Bar
    Bonjour,

    G un petit problème que je vais essayer d'expliquer le plus simplement possible.
    Donc :
    J'ai une SDI dans laquelle je veux charger une formView.
    Je veux que cette SDI ne soit pas redimensionnable.

    Le problème c que quand je rentre une taille fixe pour ma SDI et que je la size nickel pour windows 2000 ben g des gros scroll bar qui apparaissent sous XP car la taille du menu sous XP et sous 2000 n'est pas la meme! Donc sous XP la form View ne rentre plus nickel et g des barres de défilement qui apparaissent.

    Je vois donc plusieurs solutions.
    (je n'arrive d'ailleurs à en implémenter aucune.... :-( )

    1- la plus simple :
    désactiver purement et simplement les scroll Bar dans une MDI!!!! g eut bo chercher g rien trouvé la dessus!

    plus tricky :
    - détecter si quand je lance l'appli g des scroll . si oui je resize ma fenetre dynamiquement jusqu'à ce qu'ils disparaissent.... Mais alors la impossible de trouver la fonction qui me dit si ma MDI à des scroll bar ou pas!!!!!

    Merci de votre aide:
    je joins quelques bouts de codes sur la création de la SDI :
    Dans initInstance :


    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CSoftwareDoc),
    RUNTIME_CLASS(CMainFrame), // main SDI frame window
    RUNTIME_CLASS(CFond));


    CFond est la classe qui gère ma FormView

    Dans la mainframe :

    BOOL CMainFrame:reCreateWindow(CREATESTRUCT& cs)
    {
    this->SetTitle("Software");

    cs.cy=509;
    cs.cx=665;

    cs.style &= WS_SYSMENU;

    if( !CFrameWnd:reCreateWindow(cs) )
    return FALSE;
    return TRUE;
    }

    Merci m'avoir lu jusqu'au bout
    Nicolas

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Salut,
    je dis peut-être une grosse bétise mais avec les MFC (si tu les utilises?) y faut pas l'indiquer dans les options de ta formView pour afficher une ScrollBar?
    Tu fais juste un click droit sur ta Formview et tu enlèves les options VScrollBar et HScrollBar (ou un nom dans le genre).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Ben en fait les scroll sont sur la fenetre de la mainframe. Pas sur la FormView et en plus je les avais déjà désactivés.....
    Merci quand meme....
    Nicolas

  4. #4
    AP
    AP est déconnecté
    Membre confirmé
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Points : 538
    Points
    538
    Par défaut
    as tu résolu ton problème si oui je suis interessé

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    pas du tout résolu et bientôt dans le M****
    Nicolas

  6. #6
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Salut,

    plus tricky :
    - détecter si quand je lance l'appli g des scroll . si oui je resize ma fenetre dynamiquement jusqu'à ce qu'ils disparaissent.... Mais alors la impossible de trouver la fonction qui me dit si ma MDI à des scroll bar ou pas!!!!!
    La fonction CWnd::GetScrollBarCtrl devrait pouvoir faire ça.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    ok je vais jeter un coup d'oeil
    merci

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    tu aurais pas par hazard un petit exemple de comment cette fonction marche ...
    merci d'avance
    Nicolas

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Suite de la piste....
    ok je fais ca dans la mainframe : (trouvé sur code guru)

    le this est donc l'instance "MainFrame"

    CWnd* m_pParentWnd;
    m_pParentWnd=this;
    CScrollBar* pVBar;
    CScrollBar* pSBar;
    DWORD dwStyle = m_pParentWnd->GetStyle();
    pVBar = m_pParentWnd->GetScrollBarCtrl(SB_VERT);
    pSBar = m_pParentWnd->GetScrollBarCtrl(SB_HORZ);

    Mais pVBar et pSBar sont toujours à NUll qu'il y ait Scroll ou pas???? g tenté de remplacer le this par la form View que je charge mais ca ne marche pas non plus?

    Merci
    Nicolas

  10. #10
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Malheureusement,
    je crois que la réponse à ton problème est dans MSDN

    This member function does not operate on scroll bars created when the WS_HSCROLL or WS_VSCROLL bits are set during the creation of a window. The CWnd implementation of this function simply returns NULL.
    Si je comprends bien l'anglais (ce qui loin d'être le cas honnêtement), la fonction ne marche pas si les barres de défilement sont crées en même temps que la fenêtre ce qui est peut être bien ton cas si dès le départ elles sont affichées.

    Désolé si je t'ais mis dans une mauvaise direction

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    ok merci ca m'apprendra à lire la MSDN à la va vite.... Dommage on dirait que c la fin de la piste et je n'en ai toujours pas d'autres....
    Nicolas

  12. #12
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Tu peux peut-être t'aider de certains programmes dans www.codeproject.com qui manipule des ScrollBars, par exemple

    http://www.codeproject.com/listctrl/...BHide.asp#xxxx

    qui efface les scrollbar dans une Clist, tu trouveras peut-être des idées.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    oui donc c super ca marche trés bien mais en fait ca ne détecte pas les scroll il faut lui passer en param celles que l'on veut effacer et aprés il efface purement et simplement un bout de la fenetre.
    En fait mon problème, ce n'est pas de resizer la fenetre mais plutôt de détecter si les scroll sont là ou pas!!!!
    Merci quand meme bcp pour le lien.
    Nicolas

    PS: c rigolo ca fait 3 mois que je suis sur ce proj et g toujours reporté ce problème à plus tard et maintenant ben je suis coincé... :-D

    Bonne journée à vous

  14. #14
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 68
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Ceci pourrait peut etre vous aider

    Changing the Size of an SDI Main Frame Around a CFormView


    To change the size of the main frame of an SDI application (that uses CFormView as its view class) to be the appropriate size for the form you designed in App Studio, override the OnInitialUpdate() function in your class derived from CFormView, as follows:

    void CMyFormView::OnInitialUpdate()
    {
    CFormView::OnInitialUpdate();
    GetParentFrame()->RecalcLayout();
    ResizeParentToFit(); // default argument is TRUE
    }
    The ResizeParentToFit() function does not prevent the form from changing size when the user changes the size of the application main frame (scroll bars are added automatically if needed). To modify the style of the frame window that is the parent of a form view, you can override the PreCreateWindow() function in the CMainFrame class generated by AppWizard. For example, to remove the WS_THICKFRAME style and prevent the user from changing the size of the window, declare PreCreateWindow() in MAINFRM.H and add the following code to MAINFRM.CPP:

    BOOL CMainFrame:reCreateWindow(CREATESTRUCT &cs)
    {
    cs.style &= ~WS_THICKFRAME;
    return CFrameWnd:reCreateWindow(cs);
    }
    Cordialement

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Oh my god it seems to work!!!! Thx u very much guy.... I think you really save my life.....

    Have a nice day
    Nicolas

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Juste un scrolling bar du coté droit pour toutes mes cadres
    Salut à tous,

    J'ai besoin d'aide pour ma page web.
    au fait, J ai une page web avec 4 cadres et j'aimerai juste avoir un barre de défilement du coté droit pour toutes les 4 cadres( comme dans le site présent). donc une seule barre de défilement prendra en charge toutes les cadres, les cadres defileront au même moment.
    J'ai utiliser les options scrolling, no, yes, malheureusement ça ne semble fonctionner.

    voici mon programme:

    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>ordinateurs</title>
    </head>

    <frameset cols="19%,66%,15%" Border="0" frameborder="0">
    <Frame src="accueil.htm" name="left" scrolling ="NO">
    <frameset rows="33%,67%">
    <frame src="pub_rj.htm" name="Top" Scrolling="NO" target="_self">
    <frame src="rj_solutions.htm" name="center" scrolling="no">
    </frameset rows>
    <frame src="ordinateur_port.htm" name="Right" scrolling="Yes" target="_self">
    </frameset>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Scroll bar sur l'ensemble d'un contenu de fenetre
    Par gueulederack dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 06/06/2011, 17h31
  2. Réponses: 2
    Dernier message: 15/11/2007, 15h13
  3. [BCB5] Défilement automatique des scroll bars
    Par Christophe Brun dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/12/2004, 16h59
  4. fenetre sans bords pour attente chargement page
    Par k4eve dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/11/2004, 10h17
  5. [débutant]fenetre sans bordure
    Par crazypiou dans le forum DirectX
    Réponses: 2
    Dernier message: 01/05/2004, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo