[C++] Control + click

Control + click [C++] - C++ - Programmation

Marsh Posté le 17-02-2003 à 12:25:30    

J'ai un control, j'ai ma Form et je veux que quand je click sur mon control, ça fasse quelque chose, quelqu'un sait comment faire cela en C++ ?
 
C'est un control MCI qui affiche une vidéo sur toute ma Form et quand je click sur ma vidéo pour lui demander de faire pause, he bien cela ne fonctionne pas.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 17-02-2003 à 12:25:30   

Reply

Marsh Posté le 17-02-2003 à 12:29:05    

si t'avais précisé ton OS ça m'aurait évité de lire ce post  :pfff:

Reply

Marsh Posté le 17-02-2003 à 12:33:17    

Windows XP


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 17-02-2003 à 12:56:13    

++Taz a écrit :

si t'avais précisé ton OS ça m'aurait évité de lire ce post  :pfff:  

²

Reply

Marsh Posté le 17-02-2003 à 13:46:04    

tu utilises quel compilo ? quel toolkit ?
 
Si c'est VC++ et MFC, alors ça se fait en codant une fonction membre de la classe rattachée à la form contenant le bouton (généralement une fonction du genre MaFenettre:: OnBoutonClick()). Passe par le classwizard pour ça.
 
Si c'est avec QT, alors tu dois créer un slot pour le signal click() rattaché au bouton
 
Si c'est du Win32 pur, alors tu dois créer une fonction callback rattachée à l'évènement click du bouton.


Message édité par Harkonnen le 17-02-2003 à 13:46:28
Reply

Marsh Posté le 17-02-2003 à 13:51:34    

C'est du Win32.
J'ai mis ça dans mon CALLBACK WndProc :

Code :
  1. if(Msg==WM_LBUTTONDOWN)
  2.   {
  3.     if(IsMouseOver(Form2))
  4.       {
  5.        ...
  6.   }


Puis mon sous programme IsMouseOver :

Code :
  1. int IsMouseOver (HWND hWnd)
  2. {
  3.   MessageBox (GetActiveWindow(),"hello","",0);
  4.   static  RECT  Rect;
  5.   static  POINT  Pt;
  6.   GetWindowRect(hWnd,&Rect);
  7.   GetCursorPos(&Pt);
  8.   return   PtInRect(&Rect,Pt);
  9. }


Ca me parraissait une bonne idée mais ça fonctionne pas. On m'a dit qu'il marchait pour récupérer le click sur une image alors pourquoi pas sur une vidéo ????


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 17-02-2003 à 13:53:15    

parce que les vidéos c'est de l'overlay (=superposition)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-02-2003 à 15:28:07    

Et donc je dois faire comment ?


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 18-02-2003 à 20:53:10    

Apparement la classe MCI ne permet pas de notifier la fenetre parent qu'un click a eu lieu.
Bon ben faut subclasser alors :

Code :
  1. HWND hAvi;
  2. WNDPROC OldWndProc;
  3. LRESULT CALLBACK WindowProc( HWND hWnd,
  4.                              UINT  uMsg,
  5.                              WPARAM  wParam,
  6.                              LPARAM  lParam )
  7. {
  8.     if ( uMsg == WM_LBUTTONDOWN )
  9.     {
  10.         MessageBox( 0, "Bouton gauche clické !", "", 0 );
  11.         return 0;
  12.     }
  13.     else
  14.     {
  15.         return CallWindowProc( OldWndProc, hWnd, uMsg, wParam, lParam );
  16.     }
  17. }
  18. hAvi = MCIWndCreate( hwndDlg, NULL, NULL, "F:\\windows\\clock.avi" );
  19. OldWndProc = (WNDPROC) SetWindowLong( hAvi, GWL_WNDPROC, (LONG) WindowProc );


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed