bonjour,
je suis entrain de faire un bloc note en api win 32 et j'ai un problème pour dire à quelle ligne et quelle position se trouve le curseur,
si vous avez des fonctions, des idées.. je suis preneur
merci
bonjour,
je suis entrain de faire un bloc note en api win 32 et j'ai un problème pour dire à quelle ligne et quelle position se trouve le curseur,
si vous avez des fonctions, des idées.. je suis preneur
merci
Bonjour,
Tu devrais trouver ton bonheur avec le message EM_LINEFROMCHAR ...
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, mais j'ai un problème pour utiliser la fonction;
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part lResult = SendMessage(hwnd,EM_LINEFROMCHAR, wParam,(LPARAM) lParam);
et j'ai déclarer plutôt lresult avec un int.
mais je n'ai rien qui se passe.
voilà en entier:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 #include <windows.h> HINSTANCE hinst; LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hwnd; MSG msg; WNDCLASS wc; hinst = hinstance; wc.style = 0 ; wc.lpfnWndProc = MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hinstance; wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "MaWinClass"; if(!RegisterClass(&wc)) return FALSE; hwnd = CreateWindow("MaWinClass", "Titre", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, hinstance, NULL); if (!hwnd) return FALSE; ShowWindow(hwnd, nCmdShow); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } /******************************************************************************/ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { HWND hEdit; int lResult; switch (uMsg) { case WM_CREATE: hEdit =CreateWindow("edit", "Texte", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL, 10, 10, 200, 400, hwnd, NULL, hinst, NULL); lResult = SendMessage(hwnd,EM_LINEFROMCHAR, wParam,(LPARAM) lParam); return 0; case WM_SIZE: MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } }
donc voilà si vous pouvez m'aidez,
merci
Tu codes au hasard, visiblement, non ?
- hEdit n'est pas préservé d'un appel à l'autre, et ton EditBox n'a pas d'ID: Tu n'auras donc aucun moyen d'agir sur ton editbox par la suite.
- Le SendMessage doit se faire sur l'EditBox
- Et il ne se fait pas avec les WPARAM et LPARAM de la fenêtre : Il se fait avec ceux que TU veux lui passer. L'un d'eux devra sans doute être le résultat d'un message EM_GETSEL...
- Et pour les trucs beaucoup moins importants:
- Le style de code de ta WindowProc me déplait. Je suis plutôt un adepte du SESE (Single Entry, Single Exit) quand j'écris une WindowProc...
- Et le code n'est pas TCHAR-compliant, non plus...
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.
sérieusement c'est la première fois que je suis en face de send message, je connais du tout pas la fonction, si y a pas un tutoriel qui l'explique ou ...
je sais j'ai fait un peu au n'importe quoi :s ...
C'est le genre de choses qui devrait être à la base de tout tutoriel sur WinAPI:
- On donne la formule magique qui affiche une fenête "Hello World"
- On explique la formule pour qu'elle ne soit plus magique:
- On explique ce qu'est une WNDCLASS
- On explique le système de messages de Windows
- On explique la façon dont les fenêtres se dessinent.
SendMessage() utilisé pour une fenêtre ou contrôle dans le même thread, ça ne fait rien de plus compliqué qu'un appel de fonction: Tout simplement, ça appelle la WindowProc du contrôle avec les paramètres que tu veux.
Et la WindowProc des contrôles EDIT sait traiter le message EM_GETSEL, et elle le traite de la façon écrite dans la doc...
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.
Partager