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
| LRESULT APIENTRY CWebLink::newWebLinkProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
CWebLink* m_this = (CWebLink*)GetWindowLong(hwnd, GWL_USERDATA); // Récupérer un pointeur sur ma classe
if(m_this != NULL) // Nécessaire?
{
switch(uMsg)
{
case WM_PAINT: // Le label va être colorié
PAINTSTRUCT ps;
HDC hdc;
TCHAR buff[1024];
long len;
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc, TRANSPARENT); // Couleur de fond = transparente
if(m_this->bClicked)
SetTextColor(hdc, 0x800080); // Couleur du texte = mauve
else
SetTextColor(hdc, 0x0FF0000); // Couleur du texte = bleue
SelectObject(hdc, (HFONT)SendMessage(hwnd, WM_GETFONT, 0, 0)); // Sélectionner la police actuelle
len = GetWindowText(hwnd, buff, sizeof(buff));
TextOut(hdc, 0, 0, buff, len);
EndPaint(hwnd, &ps);
break;
case WM_LBUTTONDOWN:
/***** Executer l'opération *****/
ShellExecute(hwnd, "open", m_this->DefaultBrowser, m_this->cible, NULL, SW_MAXIMIZE);
m_this->bClicked = TRUE;
break;
}
}
return CallWindowProc((WNDPROC)GetWindowLong(hwnd, GWL_USERDATA), hwnd, uMsg, wParam, lParam); // USERDATA utilisé 2 fois, à corriger
} |
Partager