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 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static bool holding = false, change = false;
static FSOUND_STREAM *music = NULL;
static RECT rc;
static POINT lp;
static int dx = 0,dy = 0;
static HDC hdc, hdcBis;
static HFONT Blank=CreateFont(15,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,
DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,FF_ROMAN,"Arial Black");
static HWND hTags;
switch (message)
{
case WM_CREATE:
data.playing = 1;
SetTimer(hwnd,0,0,(TIMERPROC)NULL);
hdc=GetDC(hwnd);
hdcBis=CreateCompatibleDC(hdc);
strcpy(data.tag[0], "Artist : ");
strcpy(data.tag[1], "Title : ");
hTags = CreateWindow("STATIC", "", SS_LEFT, 5,23, 353, 53, hwnd, NULL, hInst, NULL);
break;
case WM_PAINT :
{
holding = false;
HDC hdc;
PAINTSTRUCT ps;
HBITMAP hbmTmp;
BITMAP bmpi;
HDC hdcMem;
hdcMem = CreateCompatibleDC(NULL);
hbmTmp = (HBITMAP)SelectObject(hdcMem,hBmp);
GetObject(hBmp,sizeof(bmpi),&bmpi);
hdc = BeginPaint(hwnd, &ps);
BitBlt(hdc,0,0,bmpi.bmWidth,bmpi.bmHeight,hdcMem,0,0,SRCCOPY);
EndPaint(hwnd, &ps);
SelectObject(hdcMem,hbmTmp);
DeleteDC(hdcMem);
}
break;
case WM_CTLCOLORSTATIC:
{
HDC hdc = reinterpret_cast< HDC >(wParam);
HWND hStatic = reinterpret_cast< HWND >(lParam);
if(hStatic != hTags)
{
MessageBox(hwnd,"différent", "salut", MB_OK); // Vérification
return DefWindowProc (hwnd, message, wParam, lParam);
}
MessageBox(hwnd,"bon", "salut", MB_OK);//verification
SetBkMode(hdc, TRANSPARENT); //Pour le texte
RECT r, rClient;
//Retrouver les coordonnées du contrôle dans la fenêtre
GetClientRect(hStatic, &rClient);
GetWindowRect(hStatic, &r);
MapWindowPoints(HWND_DESKTOP, hwnd, reinterpret_cast< LPPOINT >(&r), 2);
//Copier la portion du bitmap dans le contrôle:
BitBlt(hdc, 0, 0, rClient.right, rClient.bottom, hdcBis, r.left, r.top, SRCCOPY);
HBRUSH hBrush = ((HBRUSH)(GetStockObject(NULL_BRUSH)));
return reinterpret_cast< LRESULT >(hBrush);
}
case WM_ERASEBKGND:
{
holding = false;
HDC hdc;
PAINTSTRUCT ps;
HBITMAP hbmTmp;
BITMAP bmpi;
HDC hdcMem;
hdcMem = CreateCompatibleDC(NULL);
hbmTmp = (HBITMAP)SelectObject(hdcMem,hBmp);
GetObject(hBmp,sizeof(bmpi),&bmpi);
hdc = BeginPaint(hwnd, &ps);
BitBlt(hdc,0,0,bmpi.bmWidth,bmpi.bmHeight,hdcMem,0,0,SRCCOPY);
EndPaint(hwnd, &ps);
SelectObject(hdcMem,hbmTmp);
DeleteDC(hdcMem);
break;
}
//...
case WM_TIMER:
GetWindowRect(hwnd,&rc);
GetCursorPos(&lp);
dx=lp.x-rc.left;
dy=lp.y-rc.top;
if(change)
{
change = false;
SetWindowText(hTags, "salut ça marche");
}
break; |
Partager