CreateWindow(Ex) un style en particulier

cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 - 11 janv. 2007 à 09:39
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 11 janv. 2007 à 18:08
Bonjour tout le monde,
Ma question aujoourd'hui porte sur les styles des fenêtres windows (CreateWindow(Ex).
Comment peut-on réaliser les styles montrées sur l'image suivante ?

Comme vous voyez, cette fenêtre n'a pas de barres de titre mais une bordure fixe.
Aussi, comme deuxième question, comment fait-on pour avoir une fenêtre sans bordure du tout.
J'ai essayé plusieurs combinaisons mais j'arrive pas au résultat estompé.

Merci pour vos réponses.
[:D] @++

11 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
11 janv. 2007 à 10:07
Bonjour,
Pour avoir une fenêtre sans barre de titre ni bordure il suffit de lui donner le style WS_POPUP seul. Ensuite, pour avoir une bordure comme sur l'image, je la dessine dans la zone cliente avec les fonctions de la GDI.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
11 janv. 2007 à 10:59
Et WS_VISIBLE aussi bien sûr ! lol

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
11 janv. 2007 à 11:19
racpp a dit :
Ensuite, pour avoir une bordure comme sur l'image, je la dessine dans la zone cliente avec les fonctions de la GDI.

J'ai oublier un petit détail : le screenshot est pris sur un WindowsVista. Donc, la bordure fait parti du style.
J'arrive à avoir une fenêtre sans bordure du tout mais une fenêtre comme celle sur le screen, je sais pas comment ils ont fait.
J'ai essayer avec WS_THICKFRAME + WS_POPUP et j'ai eu un résultat exactement semblable sauf (il y a tjrs un sauf :) que ma fenêtre est redimensionable contrairement à celle du screenshot :(
C'est un détail mais qui a son importance pour moi.

yoyo269 a dit :
Et WS_VISIBLE aussi bien sûr ! lol
Je ne l'ai pas mentionné et ça fonctionne bien. WS_VISIBLE est le style par défaut je pense :)

Allez, d'autres idées?
Merci pour tout
[:D] @++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
11 janv. 2007 à 11:38
yoyo269 >> Pour les fenêtres il est préférable de ne pas mettre le style WS_VISIBLE. Avec ce style la fenêtre recevra WM_PAINT et sera immédiatement affichée. Grâce à ShowWindow() on ne l'affichera que quand elle a été correctement créée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
11 janv. 2007 à 11:46
racpp >> Décidément on en apprend tous les jours, merci racpp !
badrbadr >> Pour empêcher le redimensionnement, je sais pas si il y a un style (ce qui serait bcp plus simple et j'apprendrais sûrement encore qq chose), mais tu peux essayer ceci :

case WM_SIZING:
            RECT* Dimension = (RECT*)lParam;
            Dimension -> bottom = HAUTEUR + Dimension -> top;
            Dimension -> right = LARGEUR + Dimension -> left;
            return 1;
break;

HAUTEUR et LARGEUR sont des constantes pour les dimensions de ta fenêtre.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
11 janv. 2007 à 12:09
Merci yoyo269, ça fonctionne mais quand la souris est sur les bords, on voit très bien le curseur de redimensionnement. Ça gâche un peu l'effet.
Il y a certainement une autre manière de faire. En C#/.net, je pouvais spécifier une bordure fixe et aucun curseur n'apparait sur les bords. Je vais sortir Spy++ question de voir les styles utilisés.

Y'aurais pas qqun qui connait un autre moyen (en utilisant les styles par exemple), pour créer une fenêtre qui ne se redimensionne pas?

[:D] @++
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
11 janv. 2007 à 12:42
En bidouillant un peu, j'ai trouvé ça :

WS_DLGFRAME | WS_POPUP

Dis-moi si ça te convient.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
11 janv. 2007 à 12:51
Non, la bordure n'est pas la bonne.
Etk, ce n'est pas grave, je vais passer à autre chose maintenant.
Pour l'info, j'ai récupéré le style de la fenêtre (dont l'image est dans mon premier post) avec Spy++ et je l'ai appliqué tel quel à ma fenêtre. Résultat : exactement la même apparence mais ma fenêtre est redimensionable.
Constat : le programme en question (dont l'image....) utilise une fonction pour desactiver le redimensionnement.

[:D] @++
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
11 janv. 2007 à 12:53
Ok badrbadr, bon courage pour la suite alors !

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
11 janv. 2007 à 13:58
Pour empêcher l'apparition des curseurs de redimensionnement il suffit de retourner FALSE  en réponse au message WM_SETCURSOR dans la WNDPROC:

case WM_SETCURSOR:
    return 0;
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
11 janv. 2007 à 18:08
Avec WS_BORDER il n'y a pas de redimensionnement, contrairement à WS_TICKFRAME.
0
Rejoignez-nous