Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1421 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [API] SetWindowRgn

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[API] SetWindowRgn

n°133630
cerdoc
Comment l'AK47 à changé ma vie
Posté le 02-05-2002 à 18:03:27  profilanswer
 

Pour changer l'apparence d'une fenetre j'utilise l'API windows SetWindowRgn :
 
SetWindowRgn myFeuille.hwnd, myRegion, True
 
où myRegion n'a pas la forme d'un rectangle mais une forme un peu spéciale ( d'où l'interet de cette API : avoir des fenetres qui sortent de l'ordinaire :) )
Ca fonctionne bien , c'est à dire que ma fenetre à bien la forme voulue par contre certaines parties du bord de la fenetre ( voir tout le bord meme suivant la forme désirée )qui servent normalement à resizer ma fenetre ne sont plus visible et ça m'embête , je voudrais bien que tout le contour de ma (nouvelle) fenetre puisse permettre de resizer celle-ci.
 
Merci d'avance pour votre aide  
 
ps : le programme est en  VB (mais peut importe puisqu'il s'agit d'API )

mood
Publicité
Posté le 02-05-2002 à 18:03:27  profilanswer
 

n°133854
cerdoc
Comment l'AK47 à changé ma vie
Posté le 03-05-2002 à 07:46:35  profilanswer
 

up du matin

n°133855
antsite
Je me souviens
Posté le 03-05-2002 à 08:10:47  profilanswer
 

A mon avis c'est à toi de refaire un bouton et d'y associer le message WM_SIZE, et après tu gère dans la boucle des messages ce message pour redimensionner ta fenêtre. Mais bon ça c'est en C++, mais VB je connais pas, désolé !
a+
    ANT

n°133873
Carbon_14
Posté le 03-05-2002 à 08:57:55  profilanswer
 

Si la feuille est ronde, c'est normal que les boutons soient inaccesibles....
 
Faut en "dessiner" dans un "coin" visible de la feuille, autant qu'on veut, avec la bonne "apparence" (on peut récupérer les boutons normaux en copiant l'écran, puis en découpant ce qu'on désire). Il faut alors gérer sous VB le _Click sur l(es)'image(s) et gérer le "resizing".
 
Pour tirer sur le bord pour changer la taille de façon continue, c'est plus difficile (!).

n°133915
karlkox
Posté le 03-05-2002 à 10:15:20  profilanswer
 

vi, faut faire tout ca et regarde du cote de l'API StretchBlt, qui etirera ta surface.

n°134057
cerdoc
Comment l'AK47 à changé ma vie
Posté le 03-05-2002 à 13:55:25  profilanswer
 

d'abord merci pour vos réponses.
 
Mon probleme c'est pas d'avoir des boutons pour fermer/minimiser/maximiser ma fenetre (mettre d'autres controle c'est pas un soucis ) mais c'est de pouvoir attraper le bord de ma fenetre pour pouvoir la redimension.
 
Je veux par exemple avoir une fenetre dans le style de media player 7 si vous voyez ce que je veux dire (une fenetre toute ronde par exemple) et attraper ses bords pour pouvoir motiver ça taille.

n°134071
Carbon_14
Posté le 03-05-2002 à 14:03:37  profilanswer
 

Peut-être en explorant le message WM_NCHITTEST et DefWindowProc (=> one of the following values, indicating the position of the cursor hot spot). Il me semble avoir fait des essais (pr feuille rectangulaire) mais ai pas de souvenirs.
 
Les feuilles "rigolotes", on peut le resizer graduellement ??? Si c'est pas possible généralement, c'est peut-être que c'est extrêmement compliqué (faut connaître les coordonnées du contour) car c'est pas un messageWindows qui risque d'arriver, mais faut comparer à tout moment : ma souris est-elle au bord de la courbe de ma feuille ? Si oui, on transforme le curseur, et mesure le deéplacement...
 
Y a peut-être plus simple ?

n°134072
karlkox
Posté le 03-05-2002 à 14:04:27  profilanswer
 

a oki !
Bein tu récuperes la position de la souris par rapport aux bords ( API GetClientRect), tu définis évidemment la zone "propice" au redimensionnement ( API SetCursorPos ), tout ca dans un message WM_MOUSEMOVE.

n°134091
Carbon_14
Posté le 03-05-2002 à 14:30:26  profilanswer
 

KarLKoX a écrit a écrit :

a oki !
Bein tu récuperes la position de la souris par rapport aux bords ( API GetClientRect), tu définis évidemment la zone "propice" au redimensionnement ( API SetCursorPos ), tout ca dans un message WM_MOUSEMOVE.  




 
GetClientRect(), il doit être assez tortueux si le bord de fenêtre est ovale, circonvolutionné....
 
Sinon, faut mettre un bouton + et - pour gérer la taille "à la main". Ou menu "plus grand", "plus petit".

n°134127
cerdoc
Comment l'AK47 à changé ma vie
Posté le 03-05-2002 à 15:28:34  profilanswer
 

carbon_14 a écrit a écrit :

 
 
GetClientRect(), il doit être assez tortueux si le bord de fenêtre est ovale, circonvolutionné....
 
Sinon, faut mettre un bouton + et - pour gérer la taille "à la main". Ou menu "plus grand", "plus petit".  




 
ouaip en fait dans ma fenetre y a une ellipse  :D  
 
j'ai une idée en tête , que ça marche je post pour vour dire comment j'ai fait
 
merci pour les réponses , a tout à l'heure (enfin j'espere  :D )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [API] SetWindowRgn

 

Sujets relatifs
Je cherche une API très particulièreRecherche API de modélisation de graphe relationnel sous JAVA.
[C++ Builder] API Window$ pour se mettre dans la systrayAPI widows ? reformater et détection ???
[API] Net SendAPI de téléphonie de microsoft (TAPI)
[C++ Builder] Utilisation de l'API NetMessageBufferSend[C++ Builder] Utilisation de l'API NetMessageBufferSend, TRES IMPORTAN
[API] WNetAddConnection2A et profil utilisateur...[C++ Builder] Api NetMessageBufferSend et type wchar_t ...
Plus de sujets relatifs à : [API] SetWindowRgn


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR