IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

comment changer le handle de fenêtre


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut comment changer le handle de fenêtre
    g une classe CPhoto avec un objet fenêtre client, en viedolive sur 1/4 de ma fenetre parent. je souhaite afficher 4 fenetres sur tt l'ecran dont 3 figées et une qui reste en videolive. Comment charger une nouvelle fenetre à partir de la premiere
    fenetre client:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    bool CPhoto::Create(HINSTANCE hInst, HWND hParent)
    {
    if (hWnd != NULL) return false;
     
    hParentWnd = hParent;
    hWnd = CreateWindow("Photo",
    					"",
    					WS_CHILD | WS_BORDER,
    					0,
    					0,
    					360,
    					291,
    					hParentWnd,
    					NULL,
    					hInst,
    					NULL);
    if (hWnd != NULL) ShowWindow(hWnd, SW_SHOW);
    return (hWnd != NULL);
    }
     
     
     
    CPhoto::~CPhoto()
    {
    Destroy();
    }
     
     
     
    void CPhoto::Destroy(void)
    {
    if (hWnd == NULL) return ;
    DestroyWindow(hWnd);
    }
    fenetre parent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    	wc.style = 0;
    	wc.lpfnWndProc = WinPhotoProc;
    	wc.cbClsExtra = 0;
    	wc.cbWndExtra = 0;
    	wc.hInstance = hIns;
    	wc.hIcon = NULL;
    	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	wc.lpszMenuName = "";
    	wc.lpszClassName = "Photo";
     
    	if (!RegisterClass(&wc))
    		{
    		//Message("RegisterClass(\"WinUra\") impossible\n");
    		return 0;
    		}
     
        hInst = hIns;
     
        hWnd = CreateWindow("WinUraWC",
    						"WinUra",
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						NULL,
    						NULL,
    						hIns,
    						NULL);
     
        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
    	if (!Photo0.Create(hIns, hWnd)) return 0;
     
    	if (!Init(Photo0.hWnd))
    		return 0;
    	ForceClientAreaSize(hWnd, 720, 578);
    @+

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    salut,

    une fois ta deuxieme fenetre créée, il faut l'afficher, comme la premiere ...
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShowWindow(handleCreeParCPhoto, nCmdShow); 
        UpdateWindow(handleCreeParCPhoto);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut comment changer de handle de fenetre
    ok mais comment positionner les 3 autres fenetres à partir de la 1ère cad le but est que lorsque je fige la 1ère, la 2éme s'affiche ensuite se fige etc...
    1ere fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    bool CPhoto::Create(HINSTANCE hInst, HWND hParent)
    {
    if (hWnd != NULL) return false;
     
    hParentWnd = hParent;
    hWnd = CreateWindow("Photo",
    					"",
    					WS_CHILD | WS_BORDER,
    					0,  ---> modifier?
    					0,  ---> modifier?
    					360,
    					291,
    					hParentWnd,
    					NULL,
    					hInst,
    					NULL);
    if (hWnd != NULL) ShowWindow(hWnd, SW_SHOW);
    return (hWnd != NULL);
    }

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    lorsque tu figes la fenetre ? je ne comprends pas, comment figes-tu ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut comment changer de handle de fenetre
    Je dois à partir d'une source video afficher 4 photos sur mon ecran
    cad l'acquisition video s'initialise sur 1/4 de la wnd parent. Je vais en cliquant sur la fenetre client en videolive figer l'image en stoppant la capture, changer de wnd et redémarrer la capture dans la 2ème wnd ...
    d'ici je stoppe le monitoring et doit redémarrer sur une 2ème wnd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    CPhoto::~CPhoto()
    {
    Destroy();
    }
     
     
     
    void CPhoto::Destroy(void)
    {
    if (hWnd == NULL) return ;
    DestroyWindow(hWnd);
    }
     
     
    LRESULT CALLBACK WinPhotoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
    { 
       switch( message ) 
       { 
          case WM_COMMAND: 
             // ... 
             break; 
          case WM_LBUTTONDOWN: 
             trace("Terminaison\n"); 
             UranieStopMonitoring(hUranie, hWnd); ----> je fige la photo et il faut starter  dans une autre wnd
             return 0; 
       } 
       return DefWindowProc( hWnd, message, wParam, lParam ); 
    }

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et bien c'est à ce moment que tu fais les createwindow et les showwindow, et si tu as besoin de les repositionner, tu peux utiliser SetWindowPos

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut comment changer de handle de fenetre
    cad (CreateWindow+ShowWindow+SetPosWindow) * 3 ds ce cas à partir
    du click sur la 1ère fenêtre.
    le ShowWindow de la 1ère(Photo0) se fait dans le fenetre parent?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
    	if (!Photo0.Create(hIns, hWnd)) return 0;
     
    	if (!Init(Photo0.hWnd))
     
    		return 0;

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    le showWindow se fait au moment où tu veux afficher la fenetre (la création peut avoir été faite avant, il faut juste le handle de la fenetre).

    Donc, si tu veux qu'une deuxieme fenetre s'affiche au moment du click sur la souris, tu fais le showWindow dans le case WM_LBUTTONDOWN

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    newbie je suis, le handle de la 2ème fenêtre du CreateWindow n'est pas hWnd mais par ex hWndPhoto1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    hParentWnd = hParent; ---> à changer?
    hWndPhoto1 = CreateWindow("Photo",
    					"",
    					WS_CHILD | WS_BORDER,
    					0,
    					0,
    					360,
    					291,
    					hParentWnd,---> à changer?
    					NULL,
    					hInst,
    					NULL);
    [/code]

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je ne sais pas comment est fait ta classe CPhoto, mais elle semble disposer d'un attribut hWnd.

    Si c'est le cas, je ferais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CPhoto fenetrePhoto1;
    fenetrePhoto1.Create(...); // fait le createWindow
    ShowWindow(fenetrePhoto1.hWnd); // handle associé à la premiere fenetre
     
    CPhoto fenetrePhoto2;
    fenetrePhoto2.Create(...);
    ShowWindow(fenetrePhoto2.hWnd); // affiche la deuxieme fenetre
    Il faut bien comprendre qu'à chaque fenetre est associée un handle de fenetre (ce handle est retourné par la fonction CreateWindow)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    	wc.style = 0;
    	wc.lpfnWndProc = WinPhotoProc;
    	wc.cbClsExtra = 0;
    	wc.cbWndExtra = 0;
    	wc.hInstance = hIns;
    	wc.hIcon = NULL;
    	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	wc.lpszMenuName = "";
    	wc.lpszClassName = "Photo";
     
    	if (!RegisterClass(&wc))
    		{
    		//Message("RegisterClass(\"WinUra\") impossible\n");
    		return 0;
    		}

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    il faut évidement une classe (dans le sens RegisterClass) par fenetre, pour avoir le lpfnWndProc associé à la bonne fenetre afin de différencier les messages qui sont pour les différentes fenetres et d'avoir une callback par fenetre.
    Ou alors utiliser SetWindowLong pour changer la procédure de callback, mais cela me semble plus compliqué et plus fastidieux que de créer une classe différente par fenetre

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    la question est de savoir comment créer les fenetres 2/3/4(Ds la classe CPhoto)

    J'ai une classe CPhoto et la fenetre Photo0 s'affiche depuis WinMain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    int APIENTRY WinMain(HINSTANCE hIns, HINSTANCE hPrevIns, LPSTR lpCmdLine, int nCmdShow)
    //	***********************************************************************************
    {
        WNDCLASS	wc;
        HWND	hWnd;
        MSG 	msg;
     
        trace("WinMain(hIns=0x%x, hPrevIns=0x%x, lpCmdLine=\"%s\", nCmdShow=0x%x)\n", hIns, hPrevIns, lpCmdLine, nCmdShow);
     
        wc.style = 0;
        wc.lpfnWndProc = WinUraWinProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hIns;
        wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
        wc.lpszMenuName = "WinUraMenu";
        wc.lpszClassName = "WinUraWC";
     
        if (!RegisterClass(&wc))
        {
    		Message("RegisterClass(\"WinUra\") impossible\n");
    		return 0;
        }
     
     
    	wc.style = 0;
    	wc.lpfnWndProc = WinPhotoProc;
    	wc.cbClsExtra = 0;
    	wc.cbWndExtra = 0;
    	wc.hInstance = hIns;
    	wc.hIcon = NULL;
    	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	wc.lpszMenuName = "";
    	wc.lpszClassName = "Photo";
     
    	if (!RegisterClass(&wc))
    		{
    		//Message("RegisterClass(\"WinUra\") impossible\n");
    		return 0;
    		}
     
        hInst = hIns;
     
        hWnd = CreateWindow("WinUraWC",
    						"WinUra",
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						NULL,
    						NULL,
    						hIns,
    						NULL);
     
        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
    	if (!Photo0.Create(hIns, hWnd)) return 0;
     
    	if (!Init(Photo0.hWnd))
    		return 0;
    	ForceClientAreaSize(hWnd, 720, 578);
    	hAccel = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_WinUra));
    	SetTimer(hWnd, 0, 1000, NULL);
        while(GetMessage(&msg, NULL, 0, 0))
        {
    		if ((hAccel == NULL) || !TranslateAccelerator(hWnd, hAccel, &msg))
    		{
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    		}
        }
        trace("Sortie de la boucle des messages\n");
    	Term(Photo0.hWnd);
        return msg.wParam;
    }

  14. #14
    Membre habitué Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Points : 145
    Points
    145
    Par défaut
    Dans winmain:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CPhoto Photo0;
    CPhoto Photo1;
    CPhoto Photo2;
    CPhoto Photo3;
     
    if (!Photo0.Create(hIns, hWnd)) return 0; 
    if (!Photo1.Create(hIns, hWnd)) return 0; 
    if (!Photo2.Create(hIns, hWnd)) return 0; 
    if (!Photo3.Create(hIns, hWnd)) return 0;
    En rajoutant a la rigueur un paramètre dans CPhoto:Create pour préciser la position de la fenêtre.

  15. #15
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    sauf que j'imagine (il faudrait voir le code de la classe CPhoto) chaque fenetre créée comme ca sera associée à la meme callback, c'est à dire WinPhotoProc

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Voici CPhoto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    #include "stdafx.h"
    #include "WinUra.h"
    #include "Uranie.h"
     
     
     
    extern HANDLE hUranie;
    CPhoto Photo1;
     
    int CPhoto::nInst = 0;
     
    bool CPhoto::Create(HINSTANCE hInst, HWND hParent)
    {
    if (hWnd != NULL) return false;
     
    hParentWnd = hParent;
    hWnd = CreateWindow("Photo",
    					"",
    					WS_CHILD | WS_BORDER,
    					0,
    					0,
    					360,
    					291,
    					hParentWnd,
    					NULL,
    					hInst,
    					NULL);
    if (hWnd != NULL) ShowWindow(hWnd, SW_SHOW);
    return (hWnd != NULL);
    }
    /*hParentWnd = hParent; ce que j'ai ajouté
    Photo1.CreateWindow("Photo,
    					"",
    					WS_CHILD | WS_BORDER,
    					361,
    					280,
    					360,
    					291,
    					hParentWnd,
    					NULL,
    					hInst,
    					NULL);
     
    */
    CPhoto::~CPhoto()
    {
    Destroy();
    }
     
     
     
    void CPhoto::Destroy(void)
    {
    if (hWnd == NULL) return ;
    DestroyWindow(hWnd);
    }
     
     
    LRESULT CALLBACK WinPhotoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
    { 
       switch( message ) 
       { 
          case WM_COMMAND: 
             // ... 
             break; 
          case WM_LBUTTONDOWN: 
             trace("Terminaison\n"); 
             UranieStopMonitoring(hUranie, hWnd); 
    		 return 0; 
    		ShowWindow(fenetrePhoto1.hWnd, nCmdShow); ce que j'ai ajouté
    		 UpdateWindow(hWnd);
    			if (!Photo1.Create(hIns, hWnd)) return 0;
    			if (!Init(Photo1.hWnd))	return 0
             */
       } 
       return DefWindowProc( hWnd, message, wParam, lParam ); 
    }
     
     
     
    CPhoto::CPhoto()
    {
    nInst++;
    hWnd=NULL; 
    }

  17. #17
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    dans ce que tu as ajouté, tu crées une autre fenetre mais qui est rattachée à la meme classe "Photo", donc rattachée à la meme callback. Il faut que tu enregistres une classe par fenetre et que tu fasses une callback par classe

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    autant de classes que de fenêtres la procedure WinPhotoProc est identique
    pour ttes les classes.
    Ce qui va changer est la position de chaque fenetre(int x, int y) ds le CreateWindow
    Ce qui va changer pour changer le handle de chaque fenetre dans
    le callback de chaque classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    LRESULT CALLBACK WinPhotoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
    { 
       switch( message ) 
       { 
          case WM_COMMAND: 
             // ... 
             break; 
          case WM_LBUTTONDOWN: 
             trace("Terminaison\n"); 
             UranieStopMonitoring(hUranie, hWnd); 
             ShowWindow???????
    		 return 0; 
     
       } 
       return DefWindowProc( hWnd, message, wParam, lParam ); 
    }

  19. #19
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu veux dire que pour les trois fenetres créées, le comportement va etre le meme ?


    comprenons nous bien, il y a
    la classe au sens c++ du terme, la classe CPhoto par ex
    la classe au sens "fenetre", c'est à dire utilisée par RegisterClass

    Ce que je te dis, c'est que la classe fenetre "photo" définie ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     wc.style = 0; 
       wc.lpfnWndProc = WinPhotoProc; 
       wc.cbClsExtra = 0; 
       wc.cbWndExtra = 0; 
       wc.hInstance = hIns; 
       wc.hIcon = NULL; 
       wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
       wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); 
       wc.lpszMenuName = ""; 
       wc.lpszClassName = "Photo"; 
     
       if (!RegisterClass(&wc))
    s'appelle "Photo", car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       wc.lpszClassName = "Photo";
    et est gérée par la fonction callback WinPhotoProc, car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       wc.lpfnWndProc = WinPhotoProc;
    donc, pour chaque CreateWindow("Photo,, la fenetre créée sera gérée par la fonction WinPhotoProc

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    msg reçu, autre chose comment dupliquer une classe et tous ses membres ?

Discussions similaires

  1. Comment changer l'apparence d'une fenêtre
    Par bandit boy dans le forum C++Builder
    Réponses: 13
    Dernier message: 26/06/2011, 16h12
  2. Comment récupérer les handles des fenêtres d'un processus ?
    Par pivil dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 19/09/2007, 19h03
  3. Réponses: 3
    Dernier message: 26/07/2007, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo