#include <windows.h>
#define LONG_FENETRE 300
#define LARG_FENETRE 300
LRESULT CALLBACK MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return DefWindowProc( hWnd, msg, wParam, lParam );
}
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
// Enregistre la classe de la fenêtre
WNDCLASSEX wc = {
sizeof(WNDCLASSEX),
CS_CLASSDC, MsgProc,
0L, 0L,
GetModuleHandle(NULL),
NULL, NULL, NULL, NULL,
"SuperBattle", NULL };
RegisterClassEx( &wc );
// Création de la fenêtre d'application
HWND hWnd = CreateWindow(
"Superbattle", "Superbattle",
WS_OVERLAPPEDWINDOW,
100, 100, LONG_FENETRE, LARG_FENETRE * 2,
GetDesktopWindow(),
NULL, wc.hInstance, NULL );
ShowWindow(hWnd, SW_SHOWDEFAULT);
UpdateWindow(hWnd);
MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
UnregisterClass("Superbattle",
wc.hInstance);
return 0;
}
La fonction CreateWindow permet de créer la fenêtre proprement dite. Elle
retourne un pointeur de type HWND.
paramètre 1 et 2 : Le nom de l'exécutable
paramètre 3 : style de la fenêtre on a soit
WS_VISIBLE; soit WS_OVERLAPPEDWINDOW
WS_OVERLAPPEDWINDOW permet de s'afficher par dessus les autres fenêtres
existantes
paramètre 4 : position de la fenêtre sur l'axe des x
paramètre 5 : position de la fenêtre sur l'axe des y
paramètre 6 : largeur
paramètre 7 : hauteur
paramètre 8 : pointeur de la fenêtre parent. Ici il s'agit du bureau, appelé
(desktop)
paramètre 9 : pointeur de la fenêtre fille ou du menu
paramètre 10 : instance de la structure WNDCLASSEX.
paramètre 11 : utilisé pour les créations de documents multiples
ShowWindow : Affiche la fenêtre à l'écran.
UpdateWindow : Rafraîchit la fenêtre.
Ensuite nous avons une boucle infinie qui ne sort que si l'on appuie sur la
touche Échappe. Au coeur de la boucle l'interception des événements est
interprété par PeekMessage. Ceci sera remplacé à terme par l'intercepteur
DirectInput qui est plus adapté aux jeux et qui est plus performant.
La fenêtre doit faire une taille de 300 par 600 pixels. Elle recevra 2 autres
fenêtres filles de 300 par 300 pixels pour les deux joueurs.
Pour PeekMessage
Paramètre 1 : adresse de la structure du message
Paramètre 2 : pointeur de la fenêtre qui analyse le message
Paramètre 3 : valeur du premier message
Paramètre 4 : valeur du deuxième message
Paramètre 5 : styles de messages :
PM_NOREMOVE : les messages ne sont pas effacés de la pile
PM_REMOVE : les messages sont effacés de la pile
TranslateMessage : envoi une le code de la touche clavier.
DispatchMessage : envoi le message à une procédure windows
Téléchargez la source, cliquez ci-dessous :