Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1778 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  erreur avec tray message...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur avec tray message...

n°354348
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 09:48:50  profilanswer
 

J'ai mis au point une petite application afin de tester le fonctionnement d'un trayicone dans la barre des taches.
J'ai implanté une petite fonction qui réagit aux clicks sur les boutons de la souris. Le bouton gauche marche correctement, mais le bouton droit, sensé faire appel à un menu contextuel, me renvoie une erreur d'application, me disant que la zone mémoire à laquelle j'essaie d'acceder ne peut pas être "read"
(erreur exacte : "L'instruction '0x5f42e450' emploie l'adresse mémoire '0x00000004'. La mémoire ne peut pas être 'read'.
 

mood
Publicité
Posté le 07-04-2003 à 09:48:50  profilanswer
 

n°354353
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-04-2003 à 09:51:47  profilanswer
 

Regarde ce topic, j'avais indiqué la manip correcte pour gérer les traymessages et tout ce qui va avec (dont les popups gérés par clic droit)
 
http://forum.hardware.fr/forum2.php3?post=18303&cat=10
 
 
 
edit: et j'en profite pour rappeler que la fonction http://forum.hardware.fr/icones/recherche.gif du forum n'est pas la pour faire joli...


Message édité par Harkonnen le 07-04-2003 à 09:53:42

---------------
J'ai un string dans l'array (Paris Hilton)
n°354356
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 09:54:15  profilanswer
 

mon cher harkonnen, justement, je me suis déja inspiré de ta méthode, que j'ai suivie à la lettre... C'est pour ca que je me suis permis de recommencer, afin de te faire réagir  :D

n°354366
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 10:05:03  profilanswer
 

mais ca veut pas dire qu'il faut pas que tu m'aides, mon appli plante quand meme !!!

n°354373
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-04-2003 à 10:07:39  profilanswer
 

ben postes ton source alors, parce que si je sais pas ce que tu as fait, je vois pas comment je pourrais voir ou est l'erreur [:sinclaire]


---------------
J'ai un string dans l'array (Paris Hilton)
n°354380
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 10:11:58  profilanswer
 

Donc...
Apparement l'erreur vient au moment de l'appel du menu (dans le fichier wincore.cpp, l'instruction ASSERT(m_Menu != NULL).
Je te donne donc la fonction qui appelle ce menu :

Code :
  1. LRESULT CPremiereAppliDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)
  2. {
  3.   if (lParam == WM_RBUTTONDOWN)
  4.   { // bouton droit enfoncé
  5. CMenu menu;
  6. CPoint pt;
  7. menu.LoadMenu(IDR_MENU1);
  8. CMenu *m = menu.GetSubMenu(0);
  9.     ::SetForegroundWindow(m_hWnd); //nécessaire, cause bug windows
  10.     m->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this);
  11.     :: PostMessage(m_hWnd, WM_NULL, 0, 0);
  12.   }
  13.   else if (lParam == WM_LBUTTONDBLCLK)
  14.   {
  15. // double clic bouton gauche
  16. if (cpt_state == 0)
  17. {
  18.  ShowWindow(SW_SHOWNORMAL);
  19.  SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE );
  20.  SetActiveWindow();
  21.  cpt_state = 1;
  22. }
  23. else if (cpt_state == 1)
  24. {
  25.  ShowWindow(SW_HIDE);
  26.  cpt_state = 0;
  27. }
  28.   }
  29.   return 0;
  30. }


 
Le bouton gauche ne fonctionne plus, mais ca n'a rien à voir. Le compteur sert juste pour l'agrandissement de la fenetre, ou sa minimisation....

n°354390
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-04-2003 à 10:19:08  profilanswer
 

as tu vérifié dans le wincore.cpp, le nom de la méthode dans laquelle est placée l'assert() ?
apparemment, ta variable membre qui contient l'instance du menu est NULL. ce qui peut signifier que le menu n'existe pas. est-ce le bon ID de ressource que tu utilises ? (IDR_MENU1 était mon ID, ça ne veut pas dire que tu utilises forcément le même).
 
j'ai pas trop le temps aujourd'hui. si tu veux, envoie moi ton projet complet par mail (cf profil) et je le regarderais rapidement ce soir. je te répondrais sur ce topic.  
 
mais avant, vérifie bien si ta variable m_Menu n'est pas NULL, et si c'est le cas, essaie de rechercher les causes.


---------------
J'ai un string dans l'array (Paris Hilton)
n°354427
VisualC++
J'va y penser ...
Posté le 07-04-2003 à 11:04:09  profilanswer
 

Vi t'a le droit de faire un  
 

Code :
  1. if (!menu.LoadMenu(ID..))
  2. return 0;
  3. CMenu* pSubMenu = menu.GetSubMenu(0);
  4. if (!pSubMenu)
  5. return 0;


 
Ca evitera d'aller crashe sur le TrackPopup apres quand pSub est null.

n°354482
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 12:02:16  profilanswer
 

je viens de vérifier avec un mec de mon entreprise.
En effet, l'id de mon menu n'est pas bonne.
Pourtant, j'ai dessiné moi même un menu qui porte l'id IDR_MENU1.
Alors, n'ayant que très peu d'expérience dans le mfc, je ne sais pas si ca fonctionne (d'appeler un menu dessiné), mais c'est ce que j'ai fait. Le pb est donc peut etre la.
En tout cas, il ne trouve pas ce menu.  
Le mec m'a dit aussi que le probleme etait peut etre ailleurs.
Lors du lancement de l'appli (dans onInitDlg), c'est la que je créée le notifyicon, il apparait donc dès le départ. Peut etre faudrait-il qu'il n'apparaisse que lorque qu'on clique sur minimiser. A ce moment la, comment on fait ?????? et comment on fait pour que, quand la fenetre est minimiser, elle n'apparaisse pas en barre des taches, mais qu'il y ait juste l'icone en bas à droite....  :sweat:  
Aidez moi s'il vous plaaaaiiiitt   [:flclsd]

n°354486
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-04-2003 à 12:06:24  profilanswer
 

backdafuckup a écrit :

Lors du lancement de l'appli (dans onInitDlg), c'est la que je créée le notifyicon, il apparait donc dès le départ. Peut etre faudrait-il qu'il n'apparaisse que lorque qu'on clique sur minimiser. A ce moment la, comment on fait ??????  


Tu créé une fonction qui interceptera WM_MINIMIZE avec le ClassWizard, et tu places le code dedans.
 

backdafuckup a écrit :


et comment on fait pour que, quand la fenetre est minimiser, elle n'apparaisse pas en barre des taches, mais qu'il y ait juste l'icone en bas à droite....  :sweat:  
Aidez moi s'il vous plaaaaiiiitt   [:flclsd]


ShowWindow(SW_HIDE)


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 07-04-2003 à 12:06:24  profilanswer
 

n°354726
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 14:24:14  profilanswer
 

Est ce que WM_SIZE c'est pareil que WM_MINIMIZE ?
Parce que WM_MINIMIZE, je l'ai pas dans le class wizard (c bien dans MaClasseDlg qu'il faut regarder je suppose...). J'ai WM_SIZE, WM_SHOWWINDOW et des trucs du style, mais pas minimize...
Et j'avais fait ShowWindow(SW_HIDE) dans InitDlg, mais ca marche pas, la fenetre s'affiche quand meme, c'est normal ?
En tout cas, merci harkonnen pour toutes ces précisions. [:flclsd]

n°354735
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 14:28:21  profilanswer
 

Et, derniere question à tous ceux qui liront ce post. Existe-t-il une fonction qui permet de connaitre l'état de la fenetre (si elle est dans l'état SW_HIDE ou dans l'état SW_SHOWNORMAL).
Merci  :hello:

n°354768
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 14:43:55  profilanswer
 

bah... harkonnen il vient plus sur mon post....  :cry:

n°354774
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-04-2003 à 14:47:09  profilanswer
 

si si, j'ai lu ! je me suis loupé, tu dois effectivement utiliser WM_SIZE. mais dans ce cas, il faut faire gaffe à ce que ta form principale ne soit pas redimensionnable, sinon l'application sera mise en tray chaque fois que tu redimensionneras.
 
pour le ShowWindow(), ça doit fonctionner, vu que c'est ce que j'emploie pour masquer la fenêtre. j'ai pas le temps cet aprem, poste ou, mieux, envoie moi ton projet et je regarderais ça ce soir rapidement


---------------
J'ai un string dans l'array (Paris Hilton)
n°354797
backdafuck​up
Back to da old skool
Posté le 07-04-2003 à 15:02:26  profilanswer
 

je t'ai mailé mon projet sur l'adresse inscrite dans ton profil hfr... Franchement... c cool de ta part..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  erreur avec tray message...

 

Sujets relatifs
Décortiquer un message Windows[C] Erreur Sockets sous Linux : Socket operation or non-socket
balise select vide même s'il ya pas d'erreur ! est ce normal ? HELPPPP[PHP] Session : ca veut dire quoi ces messages d'erreur ?
erreur execution 3464: type de données incompatibles dans l'expressionErreur Connexion à db avec cookie
erreur ASP, jsais pas p? !![PHP] je voi pas mon erreur !
Debuger un code JS dont l'erreur apparait dans IEproblème sur message d'erreur java
Plus de sujets relatifs à : erreur avec tray message...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR