Potřebuji vykreslit průhledný Static uvnitř s textem a ikonou. Což se mi podařilo, ale při minimalizaci anebo přejetetí jiným oknem, se mi zpátky nevykreslí na původní stav. Zkousím to přes WM_PAINT, ale aplikace mi pak zamrzne. Když to celý udelám do paměti vygeneruji bitmapu, tak mám černý pozadí, není průhledný, ale zato se to zase vykresluje. Co bych měl nastavit?
Díky
Níže výcuc kódu
hButton = CreateWindowEx(WS_EX_TRANSPARENT, L"STATIC", g_Id, WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_NOTIFY, g_X, g_Y, g_Width, g_Height, hWnd, (HMENU)1, g_hInst, NULL);
RECT rect;
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hButton, &ps);
hdc = loadImg(hdc,g_Icon,0,0,"leftmiddle");
GetClientRect(hButton, &rect);
RECT rt = {rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom -1 };
SetBkMode(hdc, TRANSPARENT); //pozadi textu
CDC* pDC = CDC::FromHandle(hdc);
CFont font;
VERIFY(font.CreateFont(
46, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
100, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
EASTEUROPE_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
ANTIALIASED_QUALITY, // nQuality
VARIABLE_PITCH | FF_ROMAN, // nPitchAndFamily
TEXT("New"))); // lpszFacename
CFont *pFont = pDC->SelectObject(&font);
pDC->SetTextColor(g_TextColor);
CRect crect (rect.left+80,rect.top, rect.right, rect.bottom);
int height = pDC->DrawText(g_Caption, crect, DT_CALCRECT | DT_WORDBREAK);
crect = rect;
crect.top = (rect.bottom - height)/2;
crect.left = 80; // Odsazen zleva pro vytvoření prostoru na ikonu
unicodefixL(g_Caption);
pDC->DrawText(g_Caption,&crect,DT_WORDBREAK);
pDC->SelectObject(pFont);
font.DeleteObject();
EndPaint(hButton, &ps);
Připojen obrázek.
Připojen obrázek.