begin process at 2012 05 30 13:49:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Threads & fenêtre


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

Threads & fenêtre

vendredi 29 avril 2005 à 14:06:00 | Threads & fenêtre

SW_87

Bonjour ,

J'ai un bug sur programme que je n'arrive pas à résoudre . j'ai du mal avec le C/C++...

Je vous explique :

J'ai un main dans lequel je déclare une WNDCLASSEX puis je crée une fenetre... jusque là tout va bien.
Ensuite je fait un thread et un evenement.
Le fils est la fonction "showWindowThread". le MessageBox s'affiche bien mais il ne rentre jamais dans la boucle while (GetMessage(&msg, NULL, 0, 0)). Par consequent la fentre est reduite et ne peut jamais s'aggrandir ni se fermer.
Par contre le père s'execute bien. et si je mets le fils à la place du père la gestion de la fenetre est parfaite... Mais je ne peux pas echanger le père et le fils...

  Pourquoi je ne peux plus aggrandir la fenetre ni la fermer ???

Je vous donne mon programme simplifié, j'espere que cela suffira :


//-----------------------------------------------------------------------------

// showWindowThread

//

DWORD WINAPI showWindowThread(

IN LPVOID pParam) // thread context

{

int ret = 0;

MSG msg;

MessageBox(NULL, "Je suis le fils", "Message", MB_OK);

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

ret = msg.wParam;

//** Débloquer le thread

if (g_endEvent)

::SetEvent(g_endEvent);

return 0;

} // showWindowThread

 

//-----------------------------------------------------------------------------

// _tWinMain

int APIENTRY _tWinMain(

HINSTANCE instance, // instance

HINSTANCE prevInstance, // previous intance

LPTSTR cmdLine, // command line

int cmdShow) // show command

{

// register window class

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)wndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = instance;

wcex.hIcon = LoadIcon(instance, MAKEINTRESOURCE(IDI_ICON));

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = NULL;

wcex.lpszClassName = pServerApp->m_windowClassName;

wcex.hIconSm = NULL;

if(!RegisterClassEx(&wcex))

{

MessageBox(NULL, "Erreur lors de l'enregistrement de la classe fenêtre principale", "Erreur", MB_OK);

return 1;

}

[...]

pServerApp->m_wnd = CreateWindow(

pServerApp->m_windowClassName,

pServerApp->m_appTitle,

WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_ICONIC,

0, // Position en X de la fenetre, utiliser la valeur par défaut

0, // Position en Y de la fenetre, utiliser la valeur par défaut

400, // Largeur de la fenêtre, utiliser la valeur par défaut

0, // Hauteur de la fenêtre, utiliser la valeur par défaut

NULL, // Handle de la fenêtre parent; il s'agit de la fenetre mère, on met NULL

NULL, // Handle de menu, on n'en veut pas, on met NULL

instance, // Instance de l'application

NULL); // Non nécessaire pour le moment

[...]

#ifdef _DEBUG

// show the window in debug version

if (pServerApp->m_wnd)

{

ShowWindow(pServerApp->m_wnd, SW_MINIMIZE);

UpdateWindow(pServerApp->m_wnd);

}

#endif

[...]

g_endEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

hThread=CreateThread(NULL, 0, showWindowThread, NULL, 0, &tid);

CloseHandle(hThread);

if (hThread == NULL)

MessageBox(NULL, "Pb lors de la creation du thread", "THREAD", MB_OK);

else{

while (WAIT_TIMEOUT == ::WaitForSingleObject(g_endEvent, waitTime))

pServerApp->simReportIO();

}

[...]

}


N'hésitez pas a me faire des suggestions.

Je vous remercie !

Aurélien



Cette discussion est classée dans : fenetre, fenêtre, msg, wcex, pserverapp


Répondre à ce message

Sujets en rapport avec ce message

inserer une fenêtre opengl dans une autre fenetre [ par 20100 ] je cherche à inserer un programme que j'ai fait avec opengl dans une fenêtre windows classique(avec des boutons ...)pour l'instant tout marche mais da crer "dialog non modal" [ par comfm ] BonjourJe n'arrive pas à créer une boite de dialogue non modal, c'est à dire celle qui permet d'être tjs affichée et on peut cliquer derriere sans pro pb openGL [ par niko29940242 ] Voila je debute en openGL et j'ai un probleme; en fait je veux juste ouvrir une fenetre mais j'ai deux erreurs (notée apres le code );LE CODE :#inclu Utilisation de Xwindow Linux Suse [ par dardarmotus ] dardarmotus Bonjour à tous,Le programme doit être en langage C, l'envirronement de developpement est LINUX SUSE 6.3.Voila je dois afficher une fenêtre Comment créer un Bouton [ par new0staff ] Bonjour!Le programme ci-dessous crée et affiche une fenêtre simple. Ce que je souhaite faire, c'est rajouter un Bouton à cette fenêtre.Ce qui ne joue Colorier un static : HEeeeeeeelp !!! [ par sprintjeffC ] salut @ tousje me mets a la programmation windows en C/C++ (pas VC++ merci ... quitte à faire du microsoft je préfère VB ;-). Je démarrai pas mal et t Copie fenêtre -> fenêtre [ par Galmiza ] Salut,J'aimerais copier le contenu d'une fenêtre vers une autre. Or les parametres de BitBlit ne me permettent pas de le faire.En fait, j'ai une fenêt Zone pour bouger fenetre [ par masseur ] Salut. Je veux me créer une fenêtre personnelle pour mon programme (sous bouilder). Pour cela je dessine donc mon interface sous un logiciel de dess Changer titre Fenetre [ par by_rabbit_08 ] Bonjour!! Comment est-ce que l'on peut changer le titre de notre fenêtre en cours d'application? Ma fenêtre est généré par CreateWindowsEx(); Merci d' Empecher déplacement d'une fenêtre [ par trafounet ] Bonjour à tous,j'essaie d'empecher le déplacement d'une fenêtre au dela d'une certaine limite lorsque l'utilisateur tente de le faire avec la souris.v


Nos sponsors


Sondage...

Comparez les prix

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 : 1,092 sec (4)

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