begin process at 2012 05 30 07:41:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

mes questions sans réponses


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

mes questions sans réponses

mardi 7 septembre 2004 à 20:18:47 | mes questions sans réponses

leprov

salut a tous.
apres avoir posté ces differentes kestion et ne pas y avoir eu de reponses (maintenant elles sont a perpetes ds la liste des topics, dc jesperes plus trop de ces posts), je les réunis ici en esperant plus de succes....

1ere question: j'ai un prog ds la systray, lorsque jai un plantage genre "explorer va fermer", ma systray se redessinne, et evidemment mon prog ne se remet pas. y'a t il un evenement particulier que je pourrais capter afin de redessiner ma systray

2eme question: mon prog change la resolution avec ChangeDisplaySettings(), mais windows n'est pas au courant ke la resolution est changé. je m'explique : si windows est en 800*600 et ke mon prog me met en 1024*768, je peux pas mettre dicone en bas a droite de mon bureau car windows croit ke je suis en 800*600 (et dc le coin en bas a droite n'existe pas....). alors comment je fais?

merci d'avance pr vos reponses
mardi 7 septembre 2004 à 21:00:19 | Re : mes questions sans réponses

NitRic


Windows 95/98/Me: If the calling thread has any windows, ChangeDisplaySettings sends them the WM_DISPLAYCHANGE message immediately (for windows in all other threads, the message is sent when the thread can receive nonqueued messages). This may cause the shell to get its message too soon and could squash icons. To avoid this problem, have ChangeDisplaySettings do resolution switching by calling on a thread with no windows, for example, a new thread.


Il propose, pour résoudre le problème, d'appeler ChangeDisplaySettings() via un nouveau thread(via CreateThread()) ...

Tu cré un nouveau thread et lui passe en paramètre la nouvelle résolution, une fois le thread créé, attend qu'il ce ferme avec WaitForSingleObject( handle_du_thread, INFINITE );

Une fois le thread fermé, tu valide, via une variable global ou autre ...

par exemple:

HANDLE hThreadHandle;
DWORD dwThreadId;
int IsOkay;

typedef struct coord {
int x;
int y;
}coord;

DWORD WINAPI MonThread( void * arg ) {

coord c = *(coord *)arg;

/* ... */
ChangeDisplaySettings( ..., c.x, c.y, ... );

/* si aucune d'erreur */
IsOkay = 1;

ExitThread(0L);
return 0L;

}

int main() {

coord c;
IsOkay = 0;

c.x = x_value;
c.y = y_value;

hThreadHandle = CreateThread(NULL, 0L, MonThread, (void *)&c, 0L, &dwThreadId);

WaitForSingleObject( hThreadHandle, INFINITE );

if ( IsOkay ) {
/* tout c'est bien passé */
}
else {
/* erreur */
}

return 0;

}


C'est une idée, sinon, c'est simplement que le système n'a pas recu les dernières modifications, il te faudrait seulement trouver comment enregistrer les nouvelle modifications pour que le système s'y ajuste ...



Pour ce qui est du systray, je l'ignore, désolé ...


~(.:: NitRic ::.)~

mardi 7 septembre 2004 à 21:07:35 | Re : mes questions sans réponses

leprov

merci pr cette reponse, jaccepterais plus tard en atendant ke jai aussi une reponse a une autre question. les threads, je sais pas encore faire, dc je garde ta reponse de coté, ca va m'aider, je vais procéder comme ca des ke jaurais appris. encore merci pr ca.
mardi 7 septembre 2004 à 21:07:35 | Re : mes questions sans réponses

vecchio56

Administrateur CodeS-SourceS
Pour le systray, tu passes sous xp, et plus de bug de ce genre
mardi 7 septembre 2004 à 21:08:04 | Re : mes questions sans réponses

leprov

je suis sous xp :(
mardi 7 septembre 2004 à 21:11:21 | Re : mes questions sans réponses

vecchio56

Administrateur CodeS-SourceS
un ptit timer peut-être, mais c'est pas très joli
mercredi 8 septembre 2004 à 13:27:33 | Re : mes questions sans réponses

leprov

bah j'y avais pensé.....mais bon, c'est pas beau du tout, je préfererais trouver un message a traiter ou un truc du genre...mais je garde en solution de dernier recours....
jeudi 9 septembre 2004 à 07:58:06 | Re : mes questions sans réponses

leprov

nitric, tu pourrais m'expliquer vite faite deux ou trois trucs pr les threads, histoire que je m'y colle? et accessoirement sur ton bout de code.... :D bon ca a pas l'air compliqué (ca serait pr linstant juste pr comprendre le fonctionnement simple, le multithreading on verra plus tard...). bon donc:
c'est quoi le OL de ton DWORD, ca signifie koi?
cest koi les erreurs kil pourrait y'avoir ds mon thread? c'est propre a l'utilisation d'un thread la, ou cest juste une erreur ki pourrait survenir sur le cahngedisplaysettings?
et la une pitite kestion existentielle assez importante.....kan je crée mon thread, le reste de mon prog peut continuer a tourner non? donc si je saisis bien, il faudrait ke je mette tt mon code du reste du prog apres le waitforsingleobject, sinon mon thread va faire ses traitements et etree bloqué jusqu'a ce que l'instruction waitetcetera soit trouvée? c'est bien comme ca ke ca fonctionne?
toute les instruction entre le creat et le wait seront executées en "simultanées" de l'execution du thread (la gestion au nv du systeme ca je sais, enfin je crois, cest le coté codage ki me gene, pas le foncitonnement interne). voila, pr linstant ca devrait aller, j'attend ta reponse, et si j'ai des pbs apres, je reposterais, mais je pense ke ca ira, ca a pas l'air super super dur...
jeudi 9 septembre 2004 à 10:27:33 | Re : mes questions sans réponses

NitRic


Lorsque le système lance ton exécutable, il cré un process dans lequel ce trouve un minimum de un thread(qui est créé par le systeme) ou sera appelé/executé le point d'entré de ton application(main() ou WinMain()) et en suivera l'exécution du reste de ton code/instructions/...

Un thread == une instruction à la fois
Deux threads == deux instructions à la fois
etc ...


un DWORD est simplement un `unsigned long`, entier non signé définie dans windef.h si mes souvenirs sont bons.

Dans ton thread, les erreurs qu'il pourait y avoir dépendent du code que tu vas y mettre et non du thread lui-même.

Oui, si tu met du code entre le CreateThread() & le WaitForSingleObject(), ce code pourait être exécuté en même temp que celui du thread. Tout dépend des tâches que les threads doivent effectuer.

Tout ceci n'est peut-être pas très claire mais, j'ai un excellent lien à te proposer qui traite du multithreading, il est parfait et très bien expliqué, il y à quelques exemples, mise en situation, etc ... il est en francais >> http://bob.developpez.com/tutapiwin/article_46.php

Je le conseil _fortement_ à tout ceux/celles qui veulent en savoir d'avantage(ou tout simplement apprendre) sur le multithreading, débutant ou non.



~(.:: NitRic ::.)~
jeudi 9 septembre 2004 à 11:15:40 | Re : mes questions sans réponses

leprov

bah ecoute merci....pr les threads, javais dc les idées a peu pres ckaires (sauf sur la mise en oeuvre pratique....). et ce que je te demaindais pr ton DWORD, cest pk OL, ca signifie qqch de particuilier je suppose....
a priori les seules instructions que je puisse avoir ds mon threads seraient le changement de resolution par changedisplaysettings, et la recuperation des parametres courants de l'ecran pr changer la resolution en gardant le reste des parametres...donc je pense pas traiter d'erreurs, ds ce cas....
merci pr ca, je vais voir comment je peux me dépatouiller avec

1 2 3

Cette discussion est classée dans : windows, ke, prog, questions, systray


Répondre à ce message

Sujets en rapport avec ce message

Comment faire un prog qui s'ouvre dans une fenetre Windows et pas Dos [ par fucker ] Vous connaisez mon probleme.Merci de m'aider. Juste quelques petites questions sans rapport direct avec la prog [ par Beuss ] C'est juste pour savoir si avant de poser vos questions sur le forum vous lisez la doc qui est fournie avec votre compilo ou si vous regarder sur le n getchar non bloquant !!! [ par MasterNKZ ] Salut tout le monde,Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une utiliser un Timer [ par melkiorlenecrarque ] hello! jutilise VC++ 6 et et j'essai de transcrire mon programme "combat warhammer" pour windowsvoila mon pb:mon prog en appuyant sur un boutton execu ioctl de Linux --> ? de Windows [ par vinvay ] Pour mon stage, je dois passer un prog en C sous Linux en un prog sous Windows. Mon problème est le suivant : je ne trouve pas l'équivalent sous Windo C++ et Appli Windows ??? [ par Bombela ] Salut !Je prog en delphi depuis quelque mois.J'ai visual C++ standard et je me suis dit : Tien ! je vais essayer le C++ !Malheur !!!Je ne pige rien ! En prog Windows (MFC si possible) [ par thebestvinz ] Comment faire pour modifier dynamiquement le texte contenu dans la barre bleue la plus haute de la fenetre. (Frame) 2 questions en api win32 [ par youpiyoyo ] j'aimerai tout d'abord savoir comment mettre un titre sur ma boite de dlg en api win32 sachant ke a border=none dans la gestion des ressources. a mon Linux questions facile [ par xarier ] -------------salut tout le monde comme vous savez tous opengl est multiplate form alors il existe des library qui le rend portable ma question et tout Variables, je comprends rien! [ par StevenJLMunn ] J`ecris avec un clavier americain donc je ne peut pas ecrire avec les acents.Je fais un prog pour les codes serie (je pense ke tout le monde siat ce k


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 : 3,479 sec (4)

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