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

Windows Discussion :

[c++] fenetre bizarre


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 28
    Points : 25
    Points
    25
    Par défaut [c++] fenetre bizarre
    Bonjour,

    J'affiche une fenêtre windows, mais qui a un comportement bizarre.
    Bonjour,

    J'affiche une fenêtre windows, mais qui a un comportement bizarre.

    Lorsque je l'agrandi via le bouton "Agrandir", elle passe en taille maximun un bref instant puis reviens à sa taille d'origine.
    De même pour la minimizer, si je clique sur "réduire" elle ne reste pas dans la barre des tâches.

    Par contre je peut changer sa taille avec la souris à partir d'un des coins de la fenetre sans probleme.


    J'ai enlever la plupart du code pour ne laisser que l'essentiel mais j'ai toujours le problème.

    Est-ce que quelqu'un a déjà eu le pb ?
    D'ou cela peut-il venir ?

    Merci de vos réponses

    mon code:
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    #include <windows.h>
    //#include "logger.h"
    
    
    LRESULT CALLBACK Wproc (HWND, UINT , WPARAM , LPARAM );
    
    //#include "fenetre.h"
    
    
    int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nShow)
    {
    DWORD dw = GetLastError();
    
     //   logger::Log("log_logic.txt");
     //   flux <<"*** debut du programme" << std::endl;
    
    
            WNDCLASSEX m_wndclassex;
            HINSTANCE m_hinst;
            HWND m_hwnd;
            MSG msg;
    
            m_hinst = (HINSTANCE)GetModuleHandle(NULL);
    
            m_wndclassex.cbSize = sizeof (WNDCLASSEX);
            m_wndclassex.style = CS_OWNDC; // CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW | CS_OWNDC;                  // Catch double-clicks
            m_wndclassex.lpfnWndProc = (WNDPROC) Wproc;//wndProc;      // This function is called by windows
            m_wndclassex.cbClsExtra = 0;                      // No extra bytes after the window class
            m_wndclassex.cbWndExtra = 0;                      // structure or the window instance
            m_wndclassex.hInstance = m_hinst;
            m_wndclassex.hIcon = LoadIcon (NULL, IDI_APPLICATION);
            m_wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW);
            m_wndclassex.hbrBackground	= (HBRUSH) GetStockObject (BLACK_BRUSH);
            m_wndclassex.lpszMenuName = NULL;                 // No menu
    
    
            m_wndclassex.lpszClassName = "toto";
            m_wndclassex.hIconSm = NULL;
    
        if (!RegisterClassEx (&m_wndclassex))
        {
            ::MessageBox (0, "m_wndclassex", "Create", MB_ICONEXCLAMATION | MB_OK);
      //      flux << "erreur dw:" << dw << std::endl;
      //      ExitProcess(dw);
    
        }
    
    
        m_hwnd = CreateWindowEx(	0, //WS_EX_APPWINDOW | WS_EX_WINDOWEDGE,	//	 Extended Style For The Window
    								"toto",							// Class Name
    								"titre",								// Window Title
    								WS_OVERLAPPEDWINDOW ,//|							// Defined Window Style
    							//	WS_CLIPSIBLINGS |					// Required Window Style
    							//	WS_CLIPCHILDREN,					// Required Window Style
    								0, 0,								// Window Position
    								800,	// Calculate Window Width
    								600,	// Calculate Window Height
    								NULL,								// No Parent Window
    								NULL,								// No Menu
    								(HINSTANCE)GetModuleHandle(NULL), //m_hinst,							// Instance
    								NULL);							// Dont Pass Anything To WM_CREATE
    
     //   flux  << m_hwnd << std::endl;
    
        dw = GetLastError();
        if (!m_hwnd)
        {
            ::MessageBox (0, "erreur", "fenetre::Create", MB_ICONEXCLAMATION | MB_OK);
            //exit(1);
      //      flux << "erreur dw:" << dw << std::endl;
       //     ExitProcess(dw);
    
        }
    
        ::ShowWindow (m_hwnd, true);
    
        int finboucle = false;
        while ( !finboucle)
        {
            if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))	// Is There A Message Waiting?
    		{
    			if (msg.message==WM_QUIT )//|| keys[VK_ESCAPE] == true  )				// Have We Received A Quit Message?
    			{
    				finboucle = true;							// If So done=TRUE
    				break;
    			}
    			else									// If Not, Deal With Window Messages
    			{
    				TranslateMessage(&msg);				// Translate The Message
    				DispatchMessage(&msg);				// Dispatch The Message
    			}
    			::ShowWindow (m_hwnd, true);
    		}
        }
    
     //   flux <<"*** fin du programme" << std::endl;
        return 0;
    
    }
    
    
    LRESULT CALLBACK Wproc (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
    
    	switch (message)									// Check For Windows Messages
    	{
            case WM_CREATE:
            {
          //      flux <<"WM_CREATE" << std::endl;
                return 0;
            }
    		case WM_CLOSE:								// Did We Receive A Close Message?
    		{
    			PostQuitMessage(0);						// Send A Quit Message
    			return 0;								// Jump Back
    		}
    
            default:
                return DefWindowProc(hwnd, message, wparam, lparam);
    	}
    }

  2. #2
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 202
    Points
    8 202
    Par défaut
    Je pense que ça viens du ShowWindow qui est dans la boucle de message.
    Il n'a pas lieu d'être ici.

    De plus le deuxième paramètre de ShowWindow n'est pas un booléen
    mais une constante de style.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Aaaah! merci ca marche

    c'était bien ça le pb.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    PS: Tu as quelques casts à supprimer... Le plus important étant celui en WNDPROC : Normalement avec la déclaration actuelle, tu n'en as pas besoin, et quand tu en as besoin, ça veut dire qu'elle est mal déclarée...

    Et en effet, pour ShowWindow, 1 correspond à SW_SHOWNORMAL.

    PS: J'espère que ta boucle de messages n'est pas une boucle d'attente active dans le code complet...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    tu veux parler de ce cast m_wndclassex.lpfnWndProc = (WNDPROC) Wproc; ?

    oui ce n'est sans doute pas nécessaire...

    merci pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  2. Réponses: 4
    Dernier message: 28/09/2002, 00h00
  3. Cacher fenetre
    Par Captain Fizzou dans le forum GLUT
    Réponses: 2
    Dernier message: 25/08/2002, 17h22
  4. Réponses: 3
    Dernier message: 22/07/2002, 14h19
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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