Bonjour,
Voila je débute avec l'API windows et comme on m'a appris j'essaye de séparer les fonctions dans d'autres fichiers que le main.
Voici le code de base du tutoriel (affiche juste une fenetre vide) :
Je cherche a mettre juste un appel de fonction dans mon main qui servirai à afficher la fenetre.
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 #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> // Librairie SDL #include <windows.h> // Pour les fonctions de l'API #include "client.h" // Header connection ET recherche SRV #include "serveur.h" // Header ecoute serveur LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance, LPSTR lignesDeCommande, int modeDAffichage) { HWND fenetrePrincipale; MSG message; WNDCLASS classeFenetre; classeFenetre.style = 0; classeFenetre.lpfnWndProc = procedureFenetrePrincipale; classeFenetre.cbClsExtra = 0; classeFenetre.cbWndExtra = 0; classeFenetre.hInstance = NULL; classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION); classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW); classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE); classeFenetre.lpszMenuName = NULL; classeFenetre.lpszClassName = "classeF"; // On prévoit quand même le cas où ça échoue if(!RegisterClass(&classeFenetre)) return FALSE; fenetrePrincipale = CreateWindow("classeF", "Ma première fenêtre winAPI !", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, cetteInstance, NULL); if (!fenetrePrincipale) return FALSE; ShowWindow(fenetrePrincipale, modeDAffichage); UpdateWindow(fenetrePrincipale); while (GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } return message.wParam; } LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(fenetrePrincipale, message, wParam, lParam); } }
Tout le code serait dans serveur.c (et .h)
Voila ce que j'ai fait mais ca ne fonctionne pas :
main.c
serveur.h
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 #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> // Librairie SDL #include <windows.h> // Pour les fonctions de l'API #include "client.h" // Header connection ET recherche SRV #include "serveur.h" // Header ecoute serveur int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance, LPSTR lignesDeCommande, int modeDAffichage) { AffFenetre(); return 0; }
serveur.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #ifndef _HEADSERVEUR_ #define _HEADSERVEUR_ int AffFenetre(); LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM); #endif
L'erreur que j'ai est toujours la même :
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 #include "client.h" // Header connection ET recherche SRV #include "serveur.h" // Header ecoute serveur int AffFenetre() { HWND fenetrePrincipale; MSG message; WNDCLASS classeFenetre; classeFenetre.style = 0; classeFenetre.lpfnWndProc = procedureFenetrePrincipale; classeFenetre.cbClsExtra = 0; classeFenetre.cbWndExtra = 0; classeFenetre.hInstance = NULL; classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION); classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW); classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE); classeFenetre.lpszMenuName = NULL; classeFenetre.lpszClassName = "classeF"; // On prévoit quand même le cas où ça échoue if(!RegisterClass(&classeFenetre)) return FALSE; fenetrePrincipale = CreateWindow("classeF", "Ma première fenêtre winAPI !", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, cetteInstance, NULL); if (!fenetrePrincipale) return FALSE; ShowWindow(fenetrePrincipale, modeDAffichage); UpdateWindow(fenetrePrincipale); while (GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } return message.wParam } LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(fenetrePrincipale, message, wParam, lParam); } }
6 serveur.h syntax error before "CALLBACK"
6 serveur.h [Warning] parameter names (without types) in function declaration
6 serveur.h [Warning] data definition has no type or storage class
Si quelqu'un pouvait m'aider, je débute en API, et je galère déjà rien que pour séparer les fonctions...
Merci!
Partager