Radio button y como derivar

01/06/2004 - 17:57 por Sergio | Informe spam
Quiero hacerme unos radio buttons con colorines y demás, pero no se como
hacer en el drawitem del boton que aparezca el iconito del radio, ya sea
activo, desactivo, o por defecto. Hay alguna forma de hacerlo? o me lo
tengo que hacer yo con un editor de imagenes, y simular los estados?
Gracias.

Preguntas similare

Leer las respuestas

#1 Miguel
01/06/2004 - 18:07 | Informe spam
Sergio escribía:

Quiero hacerme unos radio buttons con colorines y demás, pero no se como
hacer en el drawitem del boton que aparezca el iconito del radio, ya sea
activo, desactivo, o por defecto. Hay alguna forma de hacerlo? o me lo
tengo que hacer yo con un editor de imagenes, y simular los estados?
Gracias.



DrawState()

Saludos

Miguel
Respuesta Responder a este mensaje
#2 Sergio
03/06/2004 - 16:51 | Informe spam
Miguel escribió:
Sergio escribía:


Quiero hacerme unos radio buttons con colorines y demás, pero no se como
hacer en el drawitem del boton que aparezca el iconito del radio, ya sea
activo, desactivo, o por defecto. Hay alguna forma de hacerlo? o me lo
tengo que hacer yo con un editor de imagenes, y simular los estados?
Gracias.




DrawState()

Saludos




Gracias Miguel por tu respuesta, pero tengo un problema con DrawState,
que no soy capaz de solucionar. Bueno, más que con DrawState es con la
función engargada de pintar el estado. Tengo lo siguiente:

void CRadioButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
int saved = dc.SaveDC();
CRect rect = lpDrawItemStruct->rcItem;
dc.FillRect(rect,&CBrush(RGB(102,106,117)));

CString cstrTexto;
GetWindowText(cstrTexto);
SetTextColor(dc.m_hDC,RGB(255,255,255));
SetBkMode(dc.m_hDC,TRANSPARENT);
DrawState(dc.m_hDC,NULL,(DRAWSTATEPROC)PintarRadio(dc.m_hDC,0,0,rect.Width(),rect.Height()),0,0,rect.left,rect.top,rect.Width(),rect.Height(),DSS_NORMAL|DST_COMPLEX);
dc.RestoreDC(saved);
dc.Detach();
}

y

BOOL CRadioButton::PintarRadio(HDC hdc,LPARAM lparam, WPARAM wparam, int
cx, int cy)
{
CMemDC *dc = (CMemDC*)CDC::FromHandle(hdc);
CPicture pic;
if (IsDlgButtonChecked(GetDlgCtrlID())) {
if (!pic.Load(IDR_RADIOON,"JPG"))
return FALSE;
}
else {
if (!pic.Load(IDR_RADIOOFF,"JPG"))
return FALSE;
}
pic.Render(dc,CRect(lparam,wparam,cx,cy));

return TRUE;
}

al salir de PintarRadio me da el siguiente error:
Excepción no controlada en 0x00000001 en EventManager.exe: 0xC0000005:
Infracción de acceso al leer la ubicación 0x00000001.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida