Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369

    [C++] - Dimensione contorni finestra

    Salve a tutti.

    La mia applicazione crea una finestra e ci deve disegnare dentro. Il problema è che l'area disegnabile, non dipende direttamente dalla dimensione della finestra.

    A tale area infatti bisogna sottrarre la barra del titolo, la barra dei menù e i vari bordini che windows mette intorno alle finestre.

    Il problema è che queste dimensioni variano da sistema operativo a sistema operativo.

    Che funzione devo chiamare quindi per ottenere quelle dimensioni?

    Pensavo a GetSistemMetrics, ma sinceramente non ho ben capito quale parametro passargli.

    Grazie mille per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Tu disegni nell'area Client e non nella Non Client quindi non dovresti avere questi problemi.

    Spiega meglio il contesto della tua applicazione altrimenti la domanda è troppo generica.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Forse AdjustWindowrect ti puo essere utile.
    Per gli Spartani e Sparta usa spartan Il mio github

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    Se io creo la finestra con CreateWindow, e come dimensioni gli dico ad esempio:

    altezza: 400px
    larghezza: 600px

    Lui mi crea una finestra alta 400px, dove quei 400 px includono anche la barra del titolo, la barra dei menù e il bordo.

    Ora, io vorrei sapere quanto è ampio lo spazio su cui posso realmente disegnare, ma per farlo dovrei sapere quanto sono grandi la barra del titolo, dei menù e il bordo. La dimensione di questi pezzi però è diversa da sistema operativo a sistema operativo, perchè dipende dalla grafica impostata. Quindi devo trovare una qualche funzione che me lo dica.

    ps. sto lavorando in ambiente windows come spero si sia capito :P

    AdjustWindowRect effettivamente potrebbe tornarmi utile, il problema è che per usarla devo prima creare la finestra, poi chiamarla, e poi eventualmente modificare la dimensione della finestra. A me invece interessa sapere già prima di creare la finestra quale sia la dimensione massima disegnabile (in termini sia di altezza che di larghezza) e poi decidere di conseguenza quanto grande fare la finestra stessa

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da alfa_19
    Se io creo la finestra con CreateWindow, e come dimensioni gli dico ad esempio:

    altezza: 400px
    larghezza: 600px

    Lui mi crea una finestra alta 400px, dove quei 400 px includono anche la barra del titolo, la barra dei menù e il bordo.

    Ora, io vorrei sapere quanto è ampio lo spazio su cui posso realmente disegnare, ma per farlo dovrei sapere quanto sono grandi la barra del titolo, dei menù e il bordo. La dimensione di questi pezzi però è diversa da sistema operativo a sistema operativo, perchè dipende dalla grafica impostata. Quindi devo trovare una qualche funzione che me lo dica.
    No, è un presupposto sbagliato, devi semplicemente chiedere quanto è grande l'area dove puoi disegnare, l'area client.

    Usa la

    GetClientRect
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    Ascolta, io devo avere queste informazioni prima di creare la finestra.

    GetClientRect chiede come parametro un hWnd, quindi posso usarla dopo aver creato la finestra.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Avevi scritto

    "La mia applicazione crea una finestra e ci deve disegnare dentro."

    e questo si fa con la CreateWindow e la GetClientRect

    Da nessuna parte avevi detto che devi avere prima queste informazioni.

    E mi chiedo, a cosa ti serve prima se ci devi disegnare dentro?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    si scusa forse nel primo post non l'avevo detto, nel secondo si però.

    Mi serve perchè devo dimensionare una finestra in base alla dimensione di un'immagine. Qualora però quest'immagine fosse troppo grande per lo schermo, allora devo ridimensionare l'immagine per farcela stare. Ovviamente però, siccome l'immagine deve comparire all'interno della finestra, io per sapere se l'immagine va ridimensionata devo prima sapere qual'è il massimo spazio che la finestra riesce a contenere, il che è diverso dalla risoluzione dello schermo proprio per via dei bordi e delle barre

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ma ancora non capisco.

    Come fanno tutti i programmi di questo mondo, si crea una window, si ottiene la dimensione della client area, si ridimensiona quello che vuoi vedere in base a tale dimensione.

    La non client area non c'entra in questo caso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    come faccio io a sapere di che dimensione devo creare quella window?

    Esempio: io ho un'immagine di 200x400. Devo creare una finestra la cui clientarea sia esattamente 200x400, come faccio?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.