begin process at 2012 05 29 01:27:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

[C++ avec API Win32] Créer des contrôles dans la fenêtre principale


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C++ avec API Win32] Créer des contrôles dans la fenêtre principale

samedi 26 mars 2011 à 15:10:39 | [C++ avec API Win32] Créer des contrôles dans la fenêtre principale

FineLizzyX

Bonjour,
Je souhaite utiliser la fenêtre principale de mon appli Win32 pour afficher les formulaires de saisie.
Au départ, je n'affiche rien, puis, à l'activation d'une option de menu, j'enchaîne les "CreateWindow" pour créer les différents contrôles du formulaire correspondant à l'option de menu. Hélas, rien ne s'affiche.
J'ajoute des "ShowWindow" : toujours rien !
J'ai, du coup, plusieurs questions :
- Comment fait-on pour créer des contrôles dans la fenêtre principale via CreateWindow ?
- Est-ce souhaitable d'opérer ainsi, voire est-ce possible ?

Pour info, la création d'une boîte de dialogue statique (via un fichier de ressources) fonctionne très bien !

Merci d'avance !

XBX
samedi 26 mars 2011 à 18:51:19 | Re : [C++ avec API Win32] Créer des contrôles dans la fenêtre principale

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

C'est tout à fait possible et tu dois oublier quelque chose dans ton CreateWindow(). (Le hinstance, la fenêtre parent ou la position relative ?)

Ici, l'exemple pour un contrôle bouton.

@++
dimanche 27 mars 2011 à 09:24:16 | Re : [C++ avec API Win32] Créer des contrôles dans la fenêtre principale

FineLizzyX

Bonjour,

Merci pour ta réponse. ^_^

Ce qui est décrit dans l'exemple ressemble très fortement à ce que j'ai codé. L'élément déterminant m'échappe...

JE VIENS DE TROUVER !!!!!
C'est, comme d'habitude dans ce genre de problème, très c..... Je m'explique.

Afin d'éviter de transporter de partout (sous forme de paramètres de fonctions, par exemple) des caisses de handles nécessaires dans l'ensemble des fichiers sources, je les ai placés en variables globales. Le handle de la fenêtre principale fait partie du lot. Or, le code de création de la fenêtre principale est un code généré et contient la déclaration dans la fonction WinMAin de la même variable affectée au handle de la fenêtre principale.
En définitive, la variable globale n'a pas de valeur car c'est la variable locale à WinMain portant le même nom qui est valorisée...

Je viens d'enlever cette déclaration dans WinMAin : ça marche impec !!!! (enfin presque : le gris du fond des contrôles est différent de celui du fond de la fenêtre principale.)

Et comment se passe l'interception des messages ? WinProc de la fenêtre principale ? Une WinProc par contrôle ?
Je vais chercher....

Merci encore !!

@++



vendredi 1 avril 2011 à 01:43:13 | Re : [C++ avec API Win32] Créer des contrôles dans la fenêtre principale

racpp

Administrateur CodeS-SourceS
Salut,
Je ne pense pas que ce soit une bonne idée de créer des contrôles suite à l'activation d'une option de menu. Normalement, tous les contrôles enfants d'une fenêtre doivent être créés pendant le traitement de WM_CREATE (ou WM_INITDIALOG pour une boite de dialogue). Les contrôles qu'on ne veut pas montrer au lancement de la fenêtre mère ne doivent pas avoir le style WS_VISIBLE dans CreateWindow(). Avec ShowWindow() on peut afficher ou cacher le contrôle voulu quand on veut.
Pour la couleur de fond de la fenêtre, le plus simple est d'utiliser le membre hbrBackground de la structure WNDCLASS ( ou WNDCLASSEX). Par exemple, pour le faire ressembler à la couleur des boutons on peut faire:
Code C/C++ :
wc.hbrBackground=(HBRUSH)(COLOR_BTNFACE + 1);

Normalement, l'interception des messages se fait dans le WNDPROC de la fenêtre principale. Dans certains cas, on peut avoir besoin d'intercepter les messages destinés aux contrôles enfants. Pour ce faire on utilise le sous-classement.



Cette discussion est classée dans : créer, fenêtre, win32, principale, contrôles


Répondre à ce message

Sujets en rapport avec ce message

Fenêtre windows... [ par ELECTRORESiSTiK ] Salut,Je suis debutant en Visual C++ et je n'arrive pas à créer ce que je veux faire...Je voudrais créer une fenêtre windows ( Form ) avec 2 edit box Créer un lien sous fenêtre windows [ par JMGR ] Comment peut - on créer un lien vers un site sous une fenêtre Windows ?(avec les MFC par ex.)a+ icone de la fenêtre principale [ par naru ] slt,je me casse la tête pour changer l'icone de ma fenêtre principale sous VC++.qqun a t-il une solution?j'ai tenté de le faire à la main en changeant changer l'icone de la fenêtre principale [ par naru ] slt,je me casse la tête pour changer l'icone de ma fenêtre principale sous VC++.qqun a t-il une solution?j'ai tenté de le faire à la main en changeant tache de fond (win32) [ par garslouche ] Bonjour,j'ai l'habitude des MFC mais j'essaie Win32 (c'est BruNews qui va être content!).Je voudrais lancer une fonction toute les secondes (j'utilise Créer une dialoguebox sans resources (win32 avec dev) [ par Ifrit235 ] Salut à tous j'aimerai savoir comment créer une dialogue box toute simple sans utiliser de resources PS : j'utiliser dev_c++ et tous les codes concern Changer la couleur du background d'une fenêtre client MDI en Win32 [ par zibo3 ] Bonjour, j'ai un petit soucis, je dois changer la couleur de fond de mes fenêtres clients MDI au cours de mon application et la seule solution que j'a créer un timer de 3 ou 4 sec [ par biscot19 ] Voila je veux faire un timer ( une boucle) qui permet a mon programme principale de se lancer toutes les 3 ou 4 secondes.voici ma fonction principaleD API Win32 Afficher une seconde fenêtre [ par Ifrit235 ] Salut à tous je cherche à afficher une seconde fenêtre mais pas une boite de dialogue (une fenetre qu'on cré avec la fonction CreateWindowEx car je ve Comment créer une fenêtre Windows [ par lebarn ] Bonmatin, bonaprèsmidi, bonsoir, bonnuit, bonmidi, etc ...Comment peut-on créer un fenêtre Windows ? Car j'ai de nombreux problème et je ne comprends


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales