begin process at 2012 05 29 06:05:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Fenêtre Windows de base en C++


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

Fenêtre Windows de base en C++

mardi 24 mai 2005 à 11:10:30 | Fenêtre Windows de base en C++

tintin72

Bonjour à tous,

Je voudrais savoir comment programmer une fenêtre Windows de base en C++, cad encapsulé dans une classe (mais pas de MFC). J'ai vue sur un site anglais un exemple qui expliquait (en gros) que le problème majeur était l'encapsulation de la procédure de fenêtre qui a un type de retour qui n'est pas compatible. Mais bon c'est en anglais et ps mal de trucs m'échappent. Est ce que qq'un pourrait m'expliquer le principe, et est ce qu'il existe un site (en français si possible:-)) où il y a des explication et des exemples ?

Merci


Tintin 72
mardi 24 mai 2005 à 11:32:41 | Re : Fenêtre Windows de base en C++

ymca2003

Plusieurs exemples dans mes sources (serial et paint je pense).
Le pb est qu'il faut mettre la WndProc en static et ariver à associer le HWND à un pointeur sur la classe d'encapsulation.

En gros voici les étapes :
- faire une classe qui va encapsuler les données de la fenêtre (dont le HWND) et traiter les messages.
- créer une mémthode statique WndProc et des methodes membres de gestion des messages (OnPaint, OnCreate...)
- les méthodes membres ne nécessiteront pas de paramètres HWND car déjà dans la classe.
- lors de la création de la fenêtre par CreateWindow, passer en dernier param un pointeur sur un objet de la classe d'encapsulation.
- lors du traitement des messages dans la méthode statique :
  - si msg = WM_CREATE ou WM_NCCREATE, récupérer l'objet associé dans le CREATESTRUCT pointé par lParam
    puis associer cet objet au HWND par SetWindowLong. Sauvegarder également le HWND dans l'objet.
  - pour les autres messages, récupére l'objet associé au HWND par GetWindowLong.
  - appeler la méthode membre de gestion du message
mardi 24 mai 2005 à 12:14:39 | Re : Fenêtre Windows de base en C++

tintin72

Merci pour ces explications. Je vais essayer de mettre en pratique tout ça ;-) 

Toutefois, au vue de l'implémentation (pas évidente) je me pose 2 questions par rapport au code classique en C:
1) Y a t-il une différence au niveau performance ?
2) Est ce que celà vaut le coup de tout encapsuler, ou est ce juste nécessaire dans    
    certain cas ?

Tintin 72
mardi 24 mai 2005 à 12:18:01 | Re : Fenêtre Windows de base en C++

ymca2003

Niveau perf : pas de différences
Avantage : permet de gérer + facilement un gros projet en mettant dans des classes de base des comportement similaires.
de plus en mettant virtuelles les méthodes de traitement des messages dans une classe WindowBase, une seule WndProc est nécessaire qui appelle les fct virtuelles qui en fonction de leur redéfinition dans des classes dérivées agit différement.
mardi 24 mai 2005 à 12:31:45 | Re : Fenêtre Windows de base en C++

tintin72

Ok, merci :-)

Tintin 72
mardi 24 mai 2005 à 19:02:53 | Re : Fenêtre Windows de base en C++

bayeto

Membre Club
Sinon je te propose egalement ma source pas complète mais simple
http://www.cppfrance.com/code.aspx?ID=28962

mayonaise tournera, bientôt, très bientôt...



Cette discussion est classée dans : base, site, windows, fenêtre, anglais


Répondre à ce message

Sujets en rapport avec ce message

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+ Fenêtre OpenGL sous Windows et maillage en cpp [ par keziah23li98 ] Salut,Cela fait quelques temps qu'avec un collègue nous avons mis au point des algorithmes d'optimisation surfacique de maillage 3D. Seulement l'utili Capture d'événement fenêtre sous windows [ par annplop ] Bonjour,le réalise une application pilotant une autre application cette dernière envoie des fenêtres que je souhaiterais capturer, ensuite je souhaite Demandes [ par cuba ] BonjourJe suis un français vivant à Cuba et ai conçu un site de réservation de chambres chez l'habitant, , transport.. guide etc.Des gens m'ont aidé à C ou dans la base de registre???? [ par VTS_35 ] Bonjour, je dois lancer des scripts ImageTool avec mon programme, scripts qui sont éxécutés par défaut sous windows. Or, quand je me sers d'une comanc 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 Recopier une zone mémoire dans une fenêtre windows [ par brosse_adan ] Bonjour à tous!mon sujet était peut-être pas super bien choisi, mais bon, j'avais pas mieux... et en plus, mon pb est compliqué à exposer!! :)voilà, j activation fenêtre après lancement automatique sous windows 2000 [ par polkas ] Bonjour,Je développe un Ecran de Veille demandant un Password qui peut être activer par l ' utilisateur ou lancer automatiquement sous Windows 2000Pro base de donnée linux/windows [ par skunsky ] Bonjour a tous,J utilise a la fois linux et windows et j aurais besoin de gerer une base de donnée et/ou de la consulter a partir de ces 2 os. Je ne c Menu dans une fenêtre windows [ par quentin2111 ] bonsoir à tous,je débute en c++ et j'ai découvert il y a un bout de temps les fameux tutoriaux d'errikke, qui sont très bien ! j'ai néanmoins un petit


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,577 sec (3)

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