Rajoute le style ES_NUMBER à ton editbox, et tu n'auras pas à t'inquiéter d'espaces: L'editbox n'acceptera que des nombres.
Rajoute le style ES_NUMBER à ton editbox, et tu n'auras pas à t'inquiéter d'espaces: L'editbox n'acceptera que des nombres.
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.
oui je l'ai déjà fait depuis quelques temps
très pratique d'ailleurs
et du coup c'est vrai que les lignes de codesont inutiles
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if britrate == ' ' britrate = 0
bonjour
c'est à propos du UDM_SETBUDDY
dans le WM_CREATE je mets ceci :mon 1er paramètre doit être faux mais je n'arrive pas à savoir où
Code : Sélectionner tout - Visualiser dans une fenêtre à part SendMessage(ID_UPDOWN, UDM_SETBUDDY, (WPARAM)ID_EDITBOX_3, 0);
puis après dans le WM_COMMAND cette fonction est appelée :
quand je compile il met ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 VOID NotificationControle(HWND fenetrePrincipale,UINT message, WPARAM wParam, LPARAM lParam) { switch(iId) { (...) case ID_UPDOWN: { weight = weight - 16; _stprintf(bufw, TEXT("%d"), weight); } } }
'warning: passing arg 1 of `SendMessageA' makes pointer from integer without a cast'
une question qui me tourmente : un contrôle updown a une flèche haut et une flèche bas.
comment lui dire : augmente de 16 quand je clique haut et diminue de 16 quand je clique bas ?
merci d'avance
Tu as encore confondu HWND et ID. Deux fois.
Pour le second, tu dois mettre le HWND de l'Editbox, pas son ID!
Pour le premier, tu peux contourner le problème en utilisant SendDlgItemMessage() à la place de SendMessage() : SendDlgItemMessage() accepte l'ID du contrôle.
Cela nous donne:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SendDlgItemMessage( fenetrePrincipale, /*HWND de ta fenêtre*/ ID_UPDOWN, /*ID du contrôle UpDown*/ UDM_SETBUDDY, /*N° de message*/ (WPARAM)GetDlgItem(fenetrePrincipale, ID_EDITBOX_3), /*HWND de l'Editbox, obtenu à partir de son ID.*/ 0 /*rien du tout*/ );
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.
encore désolé de vous embêter mais qu'entendez-vous par "pour le second" et "pour le premier"
désolé mais je n'ai pas compris
Compare ton code et le mien, en regardant la doc des fonctions, tu devrais comprendre.
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.
ça c'est à cause des pointeurs
ça m'a grillé tous mes neurones
moi c'est une chose à la fois seulement
Il n'y a pas de pointeur dans mon code.
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.
non c'est pas ça je faisais allusion au sujet sur les pointeurs du forum C
je ne voulais pas être pointé du doigt
bonne soirée
bonjour
donc si je comprend bien, cela sert à déclarer comme buddy l'editbox
c'est fait
mais je me retrouve face à un autre petit souci :
dans le WM_CREATE je crée mon editbox comme suit :ensuite dans le WM_COMMAND j'appelle une fonction à l'intérieur de laquelle je mets ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 hupdown=CreateWindowEx( 0, UPDOWN_CLASS, NULL, WS_CHILD|WS_VISIBLE, 10+290, 10+163, 40, 40, fenetrePrincipale, (HMENU)ID_UPDOWN, instance, NULL);ici j'ai simplifié le code au maximum pour tester mon contrôle updown
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 switch(iId) { case ID_UPDOWN: { MessageBox(fenetrePrincipale,lpMessage,"",MB_OK); } }
or quand je clique il n'y a aucune messagebox qui apparaît
ce qui me choque : le ID_UPDOWN ne différencie pas flèche haut et flèche bas du contrôle
C'est peut-être un WM_NOTIFY qu'il envoie au lieu d'un WM_COMMAND. C'est beaucoup plus complexe à gérer. Es-tu sûr que le "buddy" ne marche pas sans que tu y touches?
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.
bonjour
j'ai passé un très bon week-end... dommage seulement qu'il ait plu mais bon...
pour en revenir au sujet,
j'ai pourtant bien respecté ce que vous avez dit
mais comme je l'ai dit lors de mon post précédent, pour les boutons habituels il y a le case : on clique sur le bouton et pouf ! il fait une action
tandis que l'updown control est composé de 2 boutons : haut et bas
ce qui me choque c'est que j'ai écrit le case ID_UPDOWN : peut-être qu'il ne réagit pas car il faut qu'on lui précise : lorsque je clique flèche haut tu ajoutes 16 et lorsque je clique flèche bas tu retires 16
ça ne peut pas être une histoire de paramètres car les warnings concernant ceci ont bel et bien disparu
de plus je déclare bien l'UDM_SETBUDDY dans le WM_CREATE
dommage que la doc sur les updown control soit si rare et pas en français
Voici un code fait en une vingtaine de minutes:
Apparemment, il manquait juste le style UDS_SETBUDDYINT.
Code C : 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 #include <windows.h> #include <commctrl.h> #include <tchar.h> #pragma comment(lib, "comctl32.lib") #define IDC_EDIT1 10001 #define IDC_UPDOWN1 10002 LRESULT CALLBACK TestUpDownWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT ret = 0; switch(uMsg) { case WM_CREATE: { HWND hEdit = CreateWindowEx(0, _T("EDIT"), _T("42"), ES_NUMBER|WS_BORDER|WS_VISIBLE|WS_CHILD, 20, 20, 80, 20, hWnd, (HMENU)IDC_EDIT1, NULL, NULL); HWND hUpDown = CreateWindowEx(0, UPDOWN_CLASS, _T("UpDown1"), WS_VISIBLE|WS_BORDER|WS_CHILD|UDS_SETBUDDYINT, 120, 20, 20, 20, hWnd, (HMENU)IDC_UPDOWN1, NULL, NULL); SendDlgItemMessage(hWnd, IDC_UPDOWN1, UDM_SETBUDDY, (WPARAM)hEdit, 0); } break; case WM_DESTROY: PostQuitMessage(0); break; default: ret = DefWindowProc(hWnd, uMsg, wParam, lParam); break; } return ret; } void TestUpDown(void) { { INITCOMMONCONTROLSEX icx = {0}; icx.dwSize = sizeof icx; icx.dwICC = ICC_UPDOWN_CLASS; //#ifdef ICC_STANDARD_CLASSES //icx.dwICC |= ICC_STANDARD_CLASSES; //#endif if(!InitCommonControlsEx(&icx)) { DWORD err = GetLastError(); MessageBox(NULL, _T("Échec de InitCommonControlsEx()"), NULL, MB_OK); return; } } { WNDCLASSEX wcx = {0}; wcx.cbSize = sizeof wcx; wcx.hbrBackground = (HBRUSH)(COLOR_3DFACE+1); wcx.hCursor = LoadCursor(NULL, IDC_ARROW); wcx.hInstance = GetModuleHandle(NULL); wcx.lpfnWndProc = TestUpDownWndProc; wcx.lpszClassName = _T("TestUpDown"); wcx.style = CS_HREDRAW|CS_VREDRAW; if(!RegisterClassEx(&wcx)) { MessageBox(NULL, _T("Échec de RegisterClassEx()"), NULL, MB_OK); return; } } { HWND hWnd = CreateWindowEx(0, _T("TestUpDown"), _T("Test contrôle UpDown"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, CW_USEDEFAULT, 0, 320, 240, NULL, NULL, GetModuleHandle(NULL), NULL ); MSG msg; if(hWnd==NULL) { MessageBox(NULL, _T("Échec de CreateWindowEx()"), NULL, MB_OK); return; } else ShowWindow(hWnd, SW_SHOWNORMAL); while(GetMessage(&msg, NULL, 0, 0)>0) { TranslateMessage(&msg); DispatchMessage(&msg); } } }
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.
bonjour
merci pour le code c'est sympa
de mon côté j'ai demandé et un developpeur de doom9 m'a dit qu'on pouvait s'arranger pour obtenir la position du curseur : si la position est inférieure à la première alors c'est la flèche bas
apparement il faut jeter un oeil au source de DGIndex : au niveau de la boîte de dialogue "Luminance"
je vais voir pour les 2
bonjour à tous,
juste une petite question toute bête à propos du code que vous avez fait :A quoi sert le 'void' entre parenthèses, que signifie-t-il ? Jusqu'ici j'avais vu qu'on mettait VOID pour créer une fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part void TestUpDown(void)
je ne comprend pas bien. merci de m'apporter quelques lumières là-dessus.
EDIT : finalement j'ai décidé de faire différemment : je vais remplacer l'updown crée par deux push buttons que je disposerai comme l'updown mais à la place il y aura '+' et '-'
il me semble que c'est plus sage et moins compliqué pour moi pour le moment
ce qui n'empêche que je revienne dessus plus tard
Dernière modification par Invité ; 11/11/2009 à 19h17.
C'est une base du C, ça.
Dans la définition d'une fonction, c'est équivalent à ceci:
Mais quand on fait une simple déclaration, il y a une différence subtile: Si on oublie de préciser void, le C traite ça comme une fonction qui accepte n'importe quoi comme paramètres. (on dit que la fonction est déclarée, mais n'a pas de prototype). Et c'est pas bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void TestUpDown()
Donc, je prends le réflexe de toujours mettre void quand une fonction ne prend pas de paramètres du tout.
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.
merci pour l'info
j'en prend note
mais je ne savais pas : ça ne figure pas sur mes vieux cours d'infos... comme quoi
ça y est voilà !
j'ai fait avec 2 simples pushbutton et ça marche
pas besoin d'utiliser UDM_SETBUDDY : juste penser à mettre :m'a-t-on dit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sprintf(bufw, "%d", weight); SetDlgItemText(fenetrePrincipale, ID_EDITBOX_3, bufw);
j'avais une question : puisque tous les topics que j'ai postés font partie d'un seul et même projet,
n'y aurait-il pas un endroit où je pourrais les rassembler et les stocker : pour y revenir dessus plus tard sans être obligé de chercher le topic qui s'est "noyé" dans le forum ?
Tes marque-pages Firefox (ou tes favoris IE) peut-être?
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager