begin process at 2012 05 30 09:00:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

SendMessage à Dialog


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

SendMessage à Dialog

samedi 18 juin 2005 à 15:14:34 | SendMessage à Dialog

vecchio56

Administrateur CodeS-SourceS
Salut
J'ai un question pour la valeur retournée pas SendMessage quand on l'utilise pour envoyer un message à un Dialog. Voici un exemple:

INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
  case WM_USER+1:
    return 1;
  case WM_INITDIALOG:
    if(SendMessage(hDlg, WM_USER+1, 0, 0))
      MessageBox(0, 0, 0, 0);
    return TRUE;
  case WM_COMMAND:
    if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    {
      EndDialog(hDlg, LOWORD(wParam));
      return TRUE;
    }
    break;
  }
  return FALSE;
}

Ici je dis de renvoyer 1 au message WM_USER+1, mais SendMessage me renvoit 0, la MessageBox ne s'affiche pas. Par contre si je mets return 0; SendMessage me retourne une valeur non nulle.
Avec des fenêtres "normales" c'est le contraire (ca semble plus logique aussi).
C'est normal ce truc ou c'est moi qui divague
samedi 18 juin 2005 à 16:00:37 | Re : SendMessage à Dialog

BruNews

Administrateur CodeS-SourceS
return 1 ne sera pas le retour pour SendMessage mais s'en va dans eax au system.
Faut éviter ce genre de construction, pas de SendMessage sur ta dialog alors qu'elle est en phase d'initialisation.

ciao...
BruNews, MVP VC++
samedi 18 juin 2005 à 16:10:54 | Re : SendMessage à Dialog

vecchio56

Administrateur CodeS-SourceS
Ici c'était juste pour l'exemple, dans mon prog ce n'est pas ici que je la mets.
Mais eax ca correspond pas à la valeur de retour d'une API?

samedi 18 juin 2005 à 16:28:41 | Re : SendMessage à Dialog

BruNews

Administrateur CodeS-SourceS
Si mais ton "return 1" de "case WM_USER+1" s'en va chez user32.dll en retour de DlgProc et non en retour de SendMessage.

ciao...
BruNews, MVP VC++
samedi 18 juin 2005 à 16:38:49 | Re : SendMessage à Dialog

vecchio56

Administrateur CodeS-SourceS
Et comment je fais alors? Je pensais que le principe était que celui que la valeur retournée par SendMessage était fixé par celui qui le traite (pour les fenêtre qui ne sont pas des DialogBox, c'est comme ca, non?). Et puis comme SendMessage est synchrone, ca semblerait logique qu'on puisse le faire.
Selon toi, la solution serait de passer un pointeur dans wParam ou lParam?

samedi 18 juin 2005 à 17:00:40 | Re : SendMessage à Dialog

BruNews

Administrateur CodeS-SourceS
pointeur possible oui mais ne serait pas mieux en func indépendanrte ?

Pour ce qui est d'être logique, ça l'est complètement, regarde bien la logique du callback.

ciao...
BruNews, MVP VC++
samedi 18 juin 2005 à 17:08:10 | Re : SendMessage à Dialog

vecchio56

Administrateur CodeS-SourceS
Je vois pas trop la, et de toute facons, je ne suis pas sur que ca conviendrait à mon problème: la fenêtre à laquelle j'envoie le message peut être de n'importe quelle classe (en fait il s'agit d'envoyer une notification à une autre fenêtre, et la fenêtre qui recoit la notification peut dire comment elle la gère, je pensais faire ca avec la valeur de retour)
Si tu pense que ta solution peut faire ca, tu peux m'expliquer un peu plus?

samedi 18 juin 2005 à 17:49:33 | Re : SendMessage à Dialog

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Y a que toi qui sait vraiment où en est ton prog...
Si tu dois par force passer par message de fenêtre alors faudra un pointeur pour le résultat.

ciao...
BruNews, MVP VC++
samedi 18 juin 2005 à 17:51:53 | Re : SendMessage à Dialog

vecchio56

Administrateur CodeS-SourceS
Je vais faire comme ca, du coup ca m'oblige a passer une structure, mais ca m'évitera de perdre mon temps à chercher autre chose :)


Cette discussion est classée dans : message, sendmessage, wm, wparam, return


Répondre à ce message

Sujets en rapport avec ce message

pb a la fermeture de win [ par stick ] bonjours,alors voilou, je fais une appli en utilisant l'api window, mais si je ferme windows sans quitter le programme auparavant, celui ci plante et SysTreeView - au secours [ par Y0ch ] Bonsoir,Je cherche désespérément a comprendre comment initialiser et faire fonctionner un contrôle SysTreeView, mais sans résultat.Peut-être un bête p Petit problème API Windows [ par hichem16 ] Bonjour à tous ( ou bien bonsoir vu l'heure [^^langue3]) voila , je débute en API Windows et je suis entrain de faire un petit programme bien à moi, Le LPARAM de SendMessage: incrémentation [ par sunvi ] Bonjour, Je cherche à envoyer un WM_PARENTNOTIFY à une fenêtre, avec comme WPARAM= WM_LBOTTONDOWN. en regardant sur le site de msdn, j'ai trouvé qu'il [ API WIN32 ] RECUPERER APPUI BOUTON FENETRE [ par lectpe ] Bonjour, J'ai créé une boite de dialogue vide grâce aux ressources comme suit :IpToCountryDialog DIALOG 50, 30, 165, 80            STYLE WS_POPUP | WS Win32 - Message WM_LBUTTONUP non reçu [ par nico255 ] Bonsoir, mon programme en C Win32 est en tray-icon et s'inspire fortement de la source CONTROLE-VOLUME-OSD-WIN32 (ID=38949) - une CreateWindowEx WS_ Timer [ par youri01 ] salut,j'ai un ptit problème avec le timer je n'arrive pas à le faire fonctionner. dans la "WindowsProcedure" je mets :switch (message)              {  WIN32 : Editbox non editable avec une boite de dialogue CHILD [ par Pistol_Pete ] BonjourVoila mon problème: J'ai créé une fenêtre et dans cette fenêtre j'ai une boite de dialogue avec le style WS_CHILD. Tous mes contrôles de cette Probleme de socket [ par alphaone ] // tcp_client.cpp*: définit le point d'entrée pour l'appli Je trouve pas le bon code [ par vah bi ] Bonjour à tous , voilà je débute en c et comme editeur j'ai le visual c++.Je  fais actuellement une application avec l'api de visual c++  mais en lang


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,435 sec (4)

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