Bonjour je voudrais effectuer des opérations suites au événements du genre "keyPresssed" et "keyReleased" en C à partir de la DialogBox, est-ce possible de se connecter à des événements de ce type ?
Bonjour je voudrais effectuer des opérations suites au événements du genre "keyPresssed" et "keyReleased" en C à partir de la DialogBox, est-ce possible de se connecter à des événements de ce type ?
WM_KEYDOWN, WM_KEYUP...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ok merci trop de la balle ^^
sorry mais ca ne marche pas mes tableaux ne se remplissent pas :s
voila mon code qui lance ma dialogue Box :
et j'arrive bien dans cette fonction mais ca ne me remplis pas mes tableaux de tps :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DialogBox(dllHandle, MAKEINTRESOURCE(IDD_PWDIALOG), NULL, (DLGPROC)CapturePassword);
j'affiche ensuite mes tableaux pressed et latency mais ils contiennent que des 0.0000 :s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 BOOL CALLBACK CapturePassword(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) { RECT rcDlg, rcDesktop; switch (message) { /* This message is sent when the dialog gets created */ case WM_INITDIALOG: GetWindowRect(GetDesktopWindow(), &rcDesktop); GetWindowRect(hwndDlg, &rcDlg); /* Center Dialog on the desktop */ SetWindowPos(hwndDlg, HWND_TOP, rcDesktop.right/2 - ((rcDlg.right - rcDlg.left) / 2), rcDesktop.bottom/2 - ((rcDlg.bottom - rcDlg.top) / 2), 0, 0, /* ignores size arguments; no resize desired */ SWP_NOSIZE); /* Start dialog with focus in the password edit box */ SetFocus(GetDlgItem(hwndDlg, IDC_PWEDIT)); break; case WM_KEYDOWN: temps_initial = clock (); if(iter==1){ latency[indexLatency++]=(temps_initial-temps_tmp); } temps_tmp=temps_initial; iter=1; break; case WM_KEYUP: temps_final = clock (); temps_cpu = (temps_final - temps_initial); pressed[indexPressed++]=temps_cpu; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: /* Dump the password into BSP memory */ if (!GetDlgItemText(hwndDlg, IDC_PWEDIT, inputPassword1, MAX_PASSWORD_SIZE + 1)) /* if call fails, null out the password cache */ *inputPassword1=0; /* fall through after ok is pressed */ case IDCANCEL: EndDialog(hwndDlg, wParam); return TRUE; } } return FALSE; }
j'ai fait des printf pour voir ou il rentre, et apparemment pour les événements des touches pressées et relachées le programme rentre dans le cas WM_COMMAND, j'ai essayé de mettres les cas WM_KEYUP et KEYDOWN dans celui-ci mais rien :s
need help ^^
Certaines touches sont interceptées par la boucle de messages de DialogBox.
Si tu veux récupérer toutes les touches, tu peux utiliser CreateDialog() + Une boucle de message normale à la place...
PS: Change le type de retour de ta dialogproc INT_PTR et supprime ton cast lors de l'appel de la fonction DialogBox : Un cast de pointeur de fonction, c'est toujours moche.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
rolala dsl mais la j'ai rien compris :s.
C'est un code que j'ai repris et j'ai jamais travailler avec l'API Win32 donc la je suis larguer, tu pourais me dire ou m'expliquer exactement ce qu'il faut faire stp ^^
Merci d'avance.
Partager