Bonjour,
Malgré le titre, il ne s'agit pas d'uin probleme de double-buffer.
Enfin, je crois pas.
Voila mon souci : j'ai developpé un plugin pour une application.
Cette application fourni une fenetre par defaut pour mon plugin (la fenetre principale du plugin)
Ensuite, je crée et j'ouvre d'autres fenetres (des popups de configs...) depuis cette fenetre principale.
J'ai donc une classe qui gere mes fenetres, avec le traitement des messages, le dessni en double-buffering, etc...
Mais à chaque fois que j'ouvre une fenetre popup pour la premiere fois, tout mon bureau et toutes mes fenetres sont redessinées !
Ce qui produit un effet pas tres agréable....
Par contre, si je ferme une popup et que je la ré-ouvre, ça ne clignotte pas.
Auriez-vous une idée à propos de ce problème ?
Voici le code que j'utilise :
Création de la WindowClass :
Création et ouverture de la fenetre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 m_WC.style = CS_DBLCLKS; m_WC.lpfnWndProc = gestionMessagesStatic; m_WC.cbClsExtra = 0; m_WC.cbWndExtra = 0; m_WC.hInstance = (HINSTANCE) hInstance; m_WC.hIcon = NULL; m_WC.hCursor = LoadCursor(NULL, IDC_ARROW); m_WC.hbrBackground = NULL; m_WC.lpszMenuName = NULL; m_WC.lpszClassName = "maClasse"; RegisterClass(&m_WC);
Fermeture et auto-destruction de la 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 m_HWND = CreateWindowEx(WS_EX_TOOLWINDOW, "maClasse", m_titre, WS_POPUP, m_positionX, m_positionY, m_surface.largeur, m_surface.hauteur, NULL, NULL, (HINSTANCE) hInstance, (void *)this); ShowWindow(m_HWND, SW_SHOW);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DestroyWindow(m_HWND); SetWindowLongPtr(m_HWND, GWL_USERDATA, NULL); m_fenetreOuverte = false; if (m_autoDestruction) delete this;
Partager