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 85 86 87 88 89 90 91 92 93 94 95
| #include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <tchar.h>
LRESULT CALLBACK ProcFenetre(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HWND hFenetre;
int ret = EXIT_FAILURE;
/*D'abord on enregistre la "classe de fenêtre"*/
{
WNDCLASSEX wcx = {0};
wcx.cbSize = sizeof(WNDCLASSEX);
wcx.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); /*Les fenêtres de cette classe one la même couleur d'arrière-plan que notepad*/
wcx.lpfnWndProc = ProcFenetre;
wcx.hInstance = hInstance;
wcx.lpszClassName = TEXT("MaClasseDeFenetre");
wcx.style = CS_HREDRAW|CS_VREDRAW; /*Les fenêtres de cette classe se redessinent si on les redimensionne*/
wcx.hCursor = LoadCursor(NULL, IDC_ARROW); /*Les fenêtres de cette classe ont la bonne vieille flèche comme curseur*/
if(!RegisterClassEx(&wcx))
return EXIT_FAILURE;
}
hFenetre = CreateWindowEx(0, TEXT("MaClasseDeFenetre"), TEXT("Bonjour"), WS_OVERLAPPEDWINDOW|WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 480, 240, NULL, NULL, hInstance, NULL);
if(hFenetre == NULL)
return EXIT_FAILURE;
/*Boucle de messages*/
{
MSG msg;
while(GetMessage(&msg, NULL, 0, 0)>0)
{
TranslateMessage(&msg);
DispatchMessage(&msg); /*Envoie le message à la procédure de fenêtre*/
}
if(msg.message == WM_QUIT)
ret = msg.wParam;
}
return ret;
}
/*Procédure qui traite chaque message reçu par la fenêtre*/
LRESULT CALLBACK ProcFenetre(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
const int ID_HOTKEY = 42;
LRESULT ret = 0;
switch(msg)
{
/*Quand la fenêtre est créée*/
case WM_CREATE:
/*On enregistre le raccourci clavier global sur Ctrl+Shift+F*/
RegisterHotKey(hWnd, ID_HOTKEY, MOD_CONTROL|MOD_SHIFT, 'F');
break;
/*Quand la fenêtre est détruite*/
case WM_DESTROY:
/*On désenregistre le raccourci clavier global*/
UnregisterHotKey(hWnd, ID_HOTKEY);
/*Quand la fenêtre est détruite, on signale à la boucle de message de se terminer.*/
PostQuitMessage(EXIT_SUCCESS);
break;
/*Quand le raccourci global est pressé*/
case WM_HOTKEY:
{
/*On change le titre de la fenêtre pour indiquer qu'on l'a reçu*/
int idHotkey = wParam;
WORD modifiers = LOWORD(lParam);
WORD vk = HIWORD(lParam);
TCHAR buf[80];
_sntprintf_s(buf, ARRAYSIZE(buf), _TRUNCATE, _T("Got hotkey! id=%d - modifiers=%04X - vk=%04X"), idHotkey, modifiers, vk);
SetWindowText(hWnd, buf);
}
break;
/*Quand la fenêtre doit être dessinée*/
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
}
break;
default:
ret = DefWindowProc(hWnd, msg, wParam, lParam);
break;
}
return ret;
} |
Partager