Bonjour,
Merci de ne pas employer "je veux", de faire des phrases correctes (Pas de style SMS, utiliser de la ponctuation et des majuscules...), de ne pas double poster, et de donner des titres précisant le problème...
#ifdef UNICODE
#define _T(x) L ## x
typedef unsigned short TCHAR;
#else
#define _T(x) x
typedef char TCHAR;
#endif
#include <windows.h>
HINSTANCE _hThisInstance; /* Handle du module */
HWND _hWnd; /* Handle de la fenêtre */
LPTSTR _lpAppName = _T("Dessin"); /* Nom de l'appli */
HBRUSH _hMainBrush = NULL; /* Brush de la couleur de la fenêtre */
RECT _rect = { 10, 10, 200, 100 };
WORD __stdcall Err_ShowLast(TCHAR* lpTitle)
{
DWORD nLastError;
LPTSTR lpMessageBuffer;
nLastError = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, nLastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(TCHAR*)(void*)&lpMessageBuffer, 0, NULL);
MessageBox(NULL, lpMessageBuffer, lpTitle, MB_OK | MB_ICONERROR);
LocalFree(lpMessageBuffer);
return 1;
}
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps; /* Info de dessin */
HDC hDc; /* DC de dessin */
int bHandled; /* Pour savoir si le message est traité */
long nResult;
nResult = 0;
bHandled = 0;
switch (nMessage)
{
case WM_PAINT:
hDc = BeginPaint(hWnd, &ps);
FillRect(hDc, &_rect, _hMainBrush);
EndPaint(hWnd, &ps);
bHandled = 1;
break;
case WM_DESTROY:
/* On signale que le thread va s'arrêter */
PostQuitMessage(0);
bHandled = 1;
break;
}
if (! bHandled)
nResult = DefWindowProc(hWnd, nMessage, wParam, lParam);
return nResult;
}
BOOL __stdcall CreateMyWindow()
{
WNDCLASSEX wincl; /* Classe de la fenêtre utilisée */
int nResult;
nResult = 0;
/* Création de la classe de fenêtre */
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.style = 0;
wincl.lpfnWndProc = WindowProcedure;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hInstance = _hThisInstance;
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wincl.lpszMenuName = 0;
wincl.lpszClassName = _lpAppName;
wincl.hIconSm = NULL;
/* Enregistrement de la classe */
if (! RegisterClassEx(&wincl)) goto the_end;
/* Création de la fenêtre */
_hWnd = CreateWindowEx(0, _lpAppName, _lpAppName,
WS_OVERLAPPED | WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT, 500, 200,
HWND_DESKTOP, NULL, _hThisInstance, NULL);
if (! _hWnd) goto the_end;
/* Affichage de la fenêtre */
ShowWindow (_hWnd, SW_SHOW);
nResult = 1;
the_end:
return nResult;
}
/**
* Main
*/
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG message; /* Messages envoyés à l'application */
int nResult;
/* Récupération du handle du module */
_hThisInstance = hInstance;
_hMainBrush = CreateSolidBrush(RGB(255, 0, 0));
if (! CreateMyWindow())
{
nResult = Err_ShowLast(_T("Cannot create main window"));
goto the_end;
}
/* Boucle de traitement des messages */
while (GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
nResult = message.wParam;
the_end:
if (_hMainBrush != NULL)
DeleteObject(_hMainBrush);
return nResult;
}