Problemas con CStatic

25/05/2004 - 10:15 por Sergio | Informe spam
Hola grupo,
Estoy intentando hacerme una clase que derive de CStatic. Todo va bien,
exceptuando cuando cambio el texto en tiempo de ejecución, el efecto que
se produce es que se "solapan" el texto antiguo y el texto nuevo.
Esto es lo que hago:

void CMyStatic2::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *dcbuff = CDC::FromHandle(lpDrawItemStruct->hDC);
COLORREF clrBackGrnd = RGB(255,255,255);
COLORREF clrTextOld = dcbuff->GetTextColor();
COLORREF clrTextNew = RGB(255,255,255);
CRect crctRect(lpDrawItemStruct->rcItem);
CString cstrTexto;
GetWindowText(cstrTexto);
dcbuff->SetBkMode(TRANSPARENT);
dcbuff->SetTextColor(clrTextNew);
dcbuff->DrawText(cstrTexto,crctRect,DT_LEFT|DT_VCENTER|DT_SINGLELINE);
dcbuff->SetTextColor(clrTextOld);
UpdateData(FALSE);
}

He probado ha escribir el texto con TextOut, y ha escribir una cadena de
espacios en blanco antes de la salida, pero sin éxito.

Preguntas similare

Leer las respuestas

#11 Sergio
28/05/2004 - 10:03 | Informe spam
Hernán escribió:
Tenés que pasarlo de pixeles a centésimas de milímetro

offsetx = MulDiv(50, 2540, GetDeviceCaps(dis.hDC, LOGPIXELSX));
offsety = MulDiv(60, 2540, GetDeviceCaps(dis.hDC, LOGPIXELSY));

m_imagen->lpVtbl->Render(
m_imagen, /* puntero a la interfaz (this en c++) */
hDC, /* dis.hDC en tu draw-item */
0, 0, ancho, alto, /* valores en dis.rcItem */
offsetx,
altoImagen - offsety, /* altoImagen te lo da get_Height*/
anchoImagen, /* get_Width */
-altoImagen, /* cosas del MM_HIMETRIC */
NULL);





No te decía...

En realidad no es anchoImagen/altoImagen sino anchoControl/altoControl

int anchoControl = MulDiv(ancho, 2540, \
GetDeviceCaps(dis.hDC, LOGPIXELSX));

int altoControl = MulDiv(alto, 2540, \
GetDeviceCaps(dis.hDC, LOGPIXELSY));




Tengo un pequeño problema al compilar el código que me has pasado.
He ajustado las funciones (quitando las referencias a si mismo, y la
indirección, como me habias comentado) pero me da el error de un simbolo
externo sin resolver (IPicture, no lo reconoce). He probado a incluir
ocidl.h que según la MSDN esta ahí declarada, pero no hay forma.
¿Que tengo que añadir al proyecto?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida