Classe et fenêtre

Résolu
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012 - 1 juin 2006 à 16:45
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012 - 5 juin 2006 à 10:58
Bonjour,

Je voudrais savoir s'il est possible de créer une fenêtre depuis une classe, et si oui comment faut-il procéder ??

Merci,

A+

10 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
5 juin 2006 à 09:00
la WndPrpc doit être déclaré static.
POur avoir accees aux membres de la classe depuis la WndProc, passer this en dernier param de CreateWindow
at voir les post au sujet de SetWindowLong et WndProc en méthode static de class (j'ai déjçà répondu à plusiaurs questin s de ce type sur le fotum)
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
1 juin 2006 à 16:46
Oui c'est possible
Ne pas oublier de mettre la procédure de message en static pour un bon fonctionnement

if(!Meilleur("Joky")) return ERREUR;<
0
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
1 juin 2006 à 17:05
Ok, merci, mais je ne vois pas comment appeler cette fonction depuis mon constructeur ?

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE PrevhInst, LPSTR lpszArgument, int nFunsterStil)

je pense qu'il faut lui changer le nom d'abord, mais après ?

Merci
0
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
1 juin 2006 à 17:13
WinMain est la première fonction appelé au lancement de ton programme.
0

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

Posez votre question
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
1 juin 2006 à 17:16
Oui je sais, mais moi je ne veux pa créer la fenêtre au lancement du programme...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
1 juin 2006 à 17:51
Ben imaginons que tu réussisses à créer ta classe...

int __stdcall WinMain(..)
{
    WINDOW myWnd;

    myWnd.Show();
    return 0;
}
un truc dans le genre quoi...

if(!Meilleur("Joky")) return ERREUR;<
0
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
1 juin 2006 à 18:02
Désolé mais je ne vois pas...

Je veux faire une classe graphe pour tracer un graphique dans uen fenêtre, et je veux que quand dans mon programme principal je fais un "graphe * leGraphe = new graphe()" ca me crée uen fenêtre...

Merci
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
2 juin 2006 à 09:43
Met le CreateWindow dans le constructeur de la classe.
0
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
4 juin 2006 à 14:54
Salut,

Merci pour votre aide,

j'ai essayé, mais après j'ai 1 erreur :

error C2440: '=' : cannot convert from 'long (__stdcall grapheGDI::*)(struct HWND__ *,unsigned int,unsigned int,long)' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'

c'est lors de l'initialisation de la WNDCLASS

int grapheGDI::creerFenetre()
{
    HINSTANCE hInst = /*AfxGetResourceHandle()*/ GetModuleHandle(NULL);
    int nFunsterStil = SW_SHOWDEFAULT;

    init();
    MSG Messages;
    WNDCLASS wc;
   
     wc.style = 0;
     wc.lpfnWndProc = FenetreProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = 0;
     wc.hInstance = hInst;
     wc.hIcon = LoadIcon(hInst, "A");
     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
     wc.hbrBackground = CreateSolidBrush (0x909090);
     wc.lpszMenuName = "ID_MENU";
     wc.lpszClassName = "AppWnd";
     if (!RegisterClass(&wc))
         return -1;
....
}

LRESULT CALLBACK grapheGDI::FenetreProc(HWND frmhWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{.....}

Il n'arrive pas a convertir parce que "FenetreProc" fait partie de ma classe ??? J'ai essayé de rajouter "grapheGDI::" devant "FenetreProc" mais ça ne marche pas...

Quelqu'un aurait-il une idée ?

Merci,

A+
0
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
5 juin 2006 à 10:58
Ok, merci beaucoup, désolé pour les doublons...

A+
0
Rejoignez-nous