Adding checkboxes to a list view, checkbox image missing

Started by
1 comment, last by Journey 16 years, 10 months ago
I Created a list view and modified the style with LVS_EX_CHECKBOXES, and the checkbox is created, but there is no image where the checkbox should be, only a blank space. Here's part of the code:



CAPPRESULT CListViewCtrl::Create(HWND pHWndParentS_, int nWndID_, CWnd::SCWndConf* pConfDataS)
{

	CAPPRESULT sRes;

	if(CAPP_FAILED(sRes = CCtrl::Create(pHWndParentS_, nWndID_, pConfDataS)))
	{
	
		return sRes;

	}// end if

	WNDCLASSEX  WindowClassS;

	if(CWndMgr::GetInstance().InsertRegisteredClassName("CListViewCtrl", FALSE))
	{

		INITCOMMONCONTROLSEX InitCommCtrlS = {0};
		InitCommCtrlS.dwSize = sizeof(INITCOMMONCONTROLSEX);
		InitCommCtrlS.dwICC = ICC_TREEVIEW_CLASSES;
		//we need to initialize common controls
		InitCommonControlsEx(&InitCommCtrlS);
		
	}// end if

	DWORD ulStyle, ulExStyle;
	
	if(static_cast<CListViewCtrl::SCListViewCtrlConf*>(pConfDataS)->m_bEditLabel)
	{
	
		ulStyle = WS_TABSTOP | WS_CHILD | WS_VISIBLE | LVS_AUTOARRANGE | LVS_REPORT | LVS_OWNERDATA | LVS_EDITLABELS;

	}else
	{

		ulStyle = WS_TABSTOP | WS_CHILD | WS_VISIBLE | LVS_AUTOARRANGE | LVS_REPORT | LVS_OWNERDATA;
	
	}// end else

	HWND pHWndS;

	if(static_cast<CListViewCtrl::SCListViewCtrlConf*>(pConfDataS)->m_bNoBorder)
	{
	
		ulExStyle = NULL;

	}else
	{

		ulExStyle = WS_EX_CLIENTEDGE;
	
	}// end else

	if(CAPP_FAILED(sRes = this->CreateEx(ulExStyle, WC_LISTVIEW, "", ulStyle,
									    0,0,0,0, pHWndParentS_, (HMENU) (int) nWndID_, NULL, &pHWndS)))
	{
						
		return sRes;
			
	}// end if


	this->m_unIconID = static_cast<CListViewCtrl::SCListViewCtrlConf*>(pConfDataS)->m_unIconID;

	// we call OnCreate from here since we can't intercept WM_CREATE for system control classes
	if(CAPP_FAILED(sRes = (this->OnCreate(pHWndS, nWndID_))))
	{
			
		return sRes;

	}// end if

	return CAPP_ERR_NO_ERRORS;
	
}// end virtual CAPPRESULT CListViewCtrl::Create(HWND pHWndParentS_, int nWndID_, CWnd::SCWndConf* pConfDataS)




CAPPRESULT CListViewCtrl::SetExtendedStyleEx(DWORD ulExMask_, DWORD ulExStyle_)
{

	CAPPRESULT sRes;

	HWND pHWndS;

	if(CAPP_FAILED(sRes = this->GetHWnd(&pHWndS)))
	{
	
		return sRes;

	}// end if

	ListView_SetExtendedListViewStyleEx(pHWndS, ulExMask_, ulExStyle_);


	return CAPP_ERR_NO_ERRORS;
	
}// end CAPPRESULT CListViewCtrl::SetExtendedStyleEx(DWORD ulExMask_, DWORD ulExStyle_)



CAPPRESULT CListViewCtrl::OnCreate(HWND pHWndS_, int nWndID_)
{
	
	CAPPRESULT sRes;
	if(CAPP_FAILED(sRes = CCtrl::OnCreate(pHWndS_, nWndID_)))
	{
	
		return sRes;

	}// end if

	if(this->m_unIconID)
	{

		// create the image list to contain bitmaps for the buttons
		if(CAPP_FAILED(sRes = this->m_ImageListC.Create( 16, 16, ILC_COLOR32 | ILC_MASK, 1, 0 )))
		{
		
			return sRes;

		}// end if

		HICON pIconHandleS;

		if(!(pIconHandleS = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(this->m_unIconID), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR)))
		{

			return sRes;

		}// end if

		UINT unImageIndex;
		// create the image list to contain bitmaps for the buttons
		if(CAPP_FAILED(sRes = this->m_ImageListC.Add((HICON)pIconHandleS, &unImageIndex)))
		{
		
			return sRes;

		}// end if

		if(CAPP_FAILED(sRes = this->SetImageList(&this->m_ImageListC, CListViewCtrl::m_eImageListStyle::SMALL)))
		{
		
			return sRes;

		}// end if

	}// end if



	return CAPP_ERR_NO_ERRORS;

}// end CAPPRESULT CListViewCtrl::OnCreate(HWND pHWndS_, int nWndID_)




// Here's the code that creates the window


	CListViewCtrl::SCListViewCtrlConf ConfDataS;

	ZeroMemory(&ConfDataS, sizeof(CChildWnd::SCChildWndConf));
	
	ConfDataS.m_bFrameDrawOvr = FALSE;
	ConfDataS.m_bClientDrawOvr = FALSE;
	ConfDataS.m_bEditLabel = FALSE;
	ConfDataS.m_pParentC = this;
	ConfDataS.m_unIconID = NULL;
	ConfDataS.m_fRelX = 0;
	ConfDataS.m_fRelY = 13;
	ConfDataS.m_fRelWidth = 100;
	ConfDataS.m_fRelHeight = 87;
	ConfDataS.m_nNoReszSide = CChildWnd::SCChildWndConf::m_eNoReszSide::NO_RESZ_TOP | CChildWnd::SCChildWndConf::m_eNoReszSide::NO_RESZ_LEFT | CChildWnd::SCChildWndConf::m_eNoReszSide::NO_RESZ_RIGHT | CChildWnd::SCChildWndConf::m_eNoReszSide::NO_RESZ_BOTTOM;

	if(CAPP_FAILED(sRes = this->AddChild("CListViewCtrl", &(this->m_pClientEventsListViewC), &ConfDataS, &(this->m_nClientEventsListViewID))))
	{
	
		return sRes;

	}// end if

/// And here's the one that adds the columns and the checkboxes


	LV_COLUMN   ListViewColumnS;

	//initialize the columns
	ListViewColumnS.mask    = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	ListViewColumnS.fmt     = LVCFMT_LEFT;
	ListViewColumnS.cx      = 100;
	ListViewColumnS.pszText = "Evento";

    int nColumnIndex = 0;
	// initialize the list view
	if(CAPP_FAILED(sRes = dynamic_cast<CListViewCtrl*>(this->m_pClientEventsListViewC)->InsertColumn(nColumnIndex, &ListViewColumnS, &nColumnIndex)))
	{
	
		return sRes;

	}// end if


	//initialize the columns
	ListViewColumnS.mask    = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	ListViewColumnS.fmt     = LVCFMT_LEFT;
	ListViewColumnS.cx      = 100;
	ListViewColumnS.pszText = "Utilidades";

    nColumnIndex = 1;
	// initialize the list view
	if(CAPP_FAILED(sRes = dynamic_cast<CListViewCtrl*>(this->m_pClientEventsListViewC)->InsertColumn(nColumnIndex, &ListViewColumnS, &nColumnIndex)))
	{
	
		return sRes;

	}// end if

	// set the checkboxes
	if(CAPP_FAILED(sRes = dynamic_cast<CListViewCtrl*>(this->m_pClientEventsListViewC)->SetExtendedStyleEx(LVS_EX_CHECKBOXES, LVS_EX_CHECKBOXES)))
	{
	
		return sRes;

	}// end if


Please if anybody has any clue as to what might be happening let me know. I aoplogize if the OO library that I'm using, which is my own, can be a bit confusing, but it's basically the same Win32.
Advertisement
Not sure, but it could be because you send ICC_TREEVIEW_CLASSES to InitCommonControlsEx.
See what happens if you add the ICC_LISTVIEW_CLASSES flag.
Nope, I did it. And it still doesn't work.

This topic is closed to new replies.

Advertisement