Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: MFC VC++
BOOL CNBtq2Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();
 
	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
 
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
 
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here

    m_ctlListView.InsertColumn(0, _T(" PART NO   "), LVCFMT_LEFT, 100);
    m_ctlListView.InsertColumn(1, _T(" DESCRIPTION      "), LVCFMT_LEFT, 140);
    m_ctlListView.InsertColumn(2, _T("                  "), LVCFMT_RIGHT, 0);
 

  // Insert data into list-control by copying from datamodel
      static CString text[6][3]= {
  _T ("P1"),  _T ("D1"),  _T("G1"),
  _T ("P2"),  _T ("D2"),  _T("G1"),
  _T ("P3"),  _T ("D3"),  _T("G2"),
  _T ("P4"),  _T ("D4"),  _T("G2"),
  _T ("P5"),  _T ("D5"),  _T("G3"),
  _T ("P6"),  _T ("D6"),  _T("G3")
      };
 
      bool TurnOn =1;
 
      m_ctlListView.SetExtendedStyle(LVS_EX_FULLROWSELECT);
 
      //m_ctlListView.SetAltRowColors( TurnOn, 120, 190);

      int i;
 
    for ( i=0; i<6; i++)
     {
 
     m_ctlListView.InsertItem  (i, text[i][0]);
 
     m_ctlListView.SetItemText (i, 1, text[i][1]);
 
     m_ctlListView.SetItemText (i, 2, text[i][2]);
 
     if(i%2 == 0)
 
     m_ctlListView.SetTextBkColor(RGB(0,170,160));
 
     else
 
     m_ctlListView.SetTextBkColor(RGB(0,170,160));
 
     }
     m_ctlListView.GroupByColumn(2);
 
     return TRUE;
Posted 18-Jun-13 20:18pm
Edited 18-Jun-13 22:07pm
v3
Comments
Jochen Arndt at 19-Jun-13 5:14am
   
No, because this would not help answering your question and you already got the solution.
 
This link may be helpful: http://www.codeguru.com/cpp/controls/listview/backgroundcolorandimage/article.php/c4181/Changing-the-Background-Color-of-Individual-Listview-Columns.htm
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

I don't think the control supports that, I think you need to make the whole control owner drawn, to do it.
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

// Source Files Definitions
 

#include "stdafx.h"
#include "SourceDeclaration.h"
#include
#include
#include "resource.h"
 

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//#include "CListCtrl_Category_Groups.h"
BEGIN_MESSAGE_MAP(CnList, CListCtrl)
// Column Click
#if _WIN32_WINNT >= 0x0600
//ON_NOTIFY_REFLECT_EX(LVN_LINKCLICK, OnGroupTaskClick) // Column Click
#endif
END_MESSAGE_MAP()
 
namespace {
LRESULT EnableWindowTheme(HWND hwnd, LPCWSTR classList, LPCWSTR subApp, LPCWSTR idlist)
{
LRESULT lResult = S_FALSE;

HRESULT (__stdcall *pSetWindowTheme)(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList);
HANDLE (__stdcall *pOpenThemeData)(HWND hwnd, LPCWSTR pszClassList);
HRESULT (__stdcall *pCloseThemeData)(HANDLE hTheme);
 
HMODULE hinstDll = ::LoadLibrary(_T("UxTheme.dll"));
if (hinstDll)
{
(FARPROC&)pOpenThemeData = ::GetProcAddress(hinstDll, "OpenThemeData");
(FARPROC&)pCloseThemeData = ::GetProcAddress(hinstDll, "CloseThemeData");
(FARPROC&)pSetWindowTheme = ::GetProcAddress(hinstDll, "SetWindowTheme");
if (pSetWindowTheme && pOpenThemeData && pCloseThemeData)
{
HANDLE theme = pOpenThemeData(hwnd,classList);
if (theme!=NULL)
{
VERIFY(pCloseThemeData(theme)==S_OK);
lResult = pSetWindowTheme(hwnd, subApp, idlist);
}
}
::FreeLibrary(hinstDll);
}
return lResult;
}
 
bool IsCommonControlsEnabled()
{
bool commoncontrols = false;

// Test if application has access to common controls
HMODULE hinstDll = ::LoadLibrary(_T("comctl32.dll"));
if (hinstDll)
{
DLLGETVERSIONPROC pDllGetVersion = (DLLGETVERSIONPROC)::GetProcAddress(hinstDll, "DllGetVersion");
if (pDllGetVersion != NULL)
{
DLLVERSIONINFO dvi = {0};
dvi.cbSize = sizeof(dvi);
HRESULT hRes = pDllGetVersion ((DLLVERSIONINFO *) &dvi);
if (SUCCEEDED(hRes))
commoncontrols = dvi.dwMajorVersion >= 6;
}
::FreeLibrary(hinstDll);
}
return commoncontrols;
}
 
bool IsThemeEnabled()
{
bool XPStyle = false;
bool (__stdcall *pIsAppThemed)();
bool (__stdcall *pIsThemeActive)();
 
// Test if operating system has themes enabled
HMODULE hinstDll = ::LoadLibrary(_T("UxTheme.dll"));
if (hinstDll)
{
(FARPROC&)pIsAppThemed = ::GetProcAddress(hinstDll, "IsAppThemed");
(FARPROC&)pIsThemeActive = ::GetProcAddress(hinstDll,"IsThemeActive");
if (pIsAppThemed != NULL && pIsThemeActive != NULL)
{
if (pIsAppThemed() && pIsThemeActive())
{
// Test if application has themes enabled by loading the proper DLL
XPStyle = IsCommonControlsEnabled();
}
}
::FreeLibrary(hinstDll);
}
return XPStyle;
}
}
 
LRESULT CnList::InsertGroupHeader(int nIndex, int nGroupId, const CString& strHeader, DWORD dwState /* = LVGS_NORMAL */, DWORD dwAlign /*= LVGA_HEADER_LEFT*/)
{
LVGROUP lg = {0};
lg.cbSize = sizeof(lg);
lg.iGroupId = nGroupId;
lg.state = dwState;
lg.mask = LVGF_GROUPID | LVGF_HEADER | LVGF_STATE | LVGF_ALIGN;
lg.uAlign = dwAlign;
 
// Header-title must be unicode (Convert if necessary)
#ifdef UNICODE
lg.pszHeader = (LPWSTR)(LPCTSTR)strHeader;
lg.cchHeader = strHeader.GetLength();
#else
CComBSTR header = strHeader;
lg.pszHeader = header;
lg.cchHeader = header.Length();
#endif
 
return InsertGroup(nIndex, (PLVGROUP)&lg );
}
BOOL CnList::SetRowGroupId(int nRow, int nGroupId)
{
//OBS! Rows not assigned to a group will not show in group-view
LVITEM lvItem = {0};
lvItem.mask = LVIF_GROUPID;
lvItem.iItem = nRow;
lvItem.iSubItem = 0;
lvItem.iGroupId = nGroupId;
return SetItem( &lvItem );
}
int CnList::GetRowGroupId(int nRow)
{
LVITEM lvi = {0};
lvi.mask = LVIF_GROUPID;
lvi.iItem = nRow;
VERIFY( GetItem(&lvi) );
return lvi.iGroupId;
}
 
BOOL CnList::GroupByColumn(int nCol)
{
if (!IsCommonControlsEnabled())
return FALSE;
 
CWaitCursor waitCursor;
 
//SetSortArrow(-1, false);
 
SetRedraw(FALSE);
 
RemoveAllGroups();
 
EnableGroupView( GetItemCount() > 0 );
 
if (IsGroupViewEnabled())
{
CSimpleMap<cstring,csimplearray> > groups;
 
// Loop through all rows and find possible groups
for(int nRow=0; nRow<getitemcount();> {
CString cellText = GetItemText(nRow, nCol);
 
int nGroupId = groups.FindKey(cellText);
if (nGroupId==-1)
{
CSimpleArray rows;
groups.Add(cellText, rows);
nGroupId = groups.FindKey(cellText);
}
groups.GetValueAt(nGroupId).Add(nRow);
}
 
// Look through all groups and assign rows to group
 
for(int nGroupId = 0; nGroupId < groups.GetSize(); ++nGroupId)
{
const CSimpleArray& groupRows = groups.GetValueAt(nGroupId);
DWORD dwState = LVGS_NORMAL;
 
#ifdef LVGS_COLLAPSIBLE
if (IsGroupStateEnabled())
dwState = LVGS_COLLAPSIBLE;
#endif
 
VERIFY( InsertGroupHeader(nGroupId, nGroupId, groups.GetKeyAt(nGroupId), dwState) != -1);

for(int groupRow = 0; groupRow < groupRows.GetSize(); ++groupRow)
{
VERIFY( SetRowGroupId(groupRows[groupRow], nGroupId) );
}
}
SetRedraw(TRUE);
Invalidate(FALSE);
return TRUE;
}
 
SetRedraw(TRUE);
Invalidate(FALSE);
return FALSE;
}
 
namespace {
struct PARAMSORT
{
PARAMSORT(HWND hWnd, int nCol, bool bAscending)
:m_hWnd(hWnd)
,m_ColumnIndex(nCol)
,m_Ascending(bAscending)
{}
 
HWND m_hWnd;
int m_ColumnIndex;
bool m_Ascending;
CSimpleMap<int,cstring> m_GroupNames;
 
const CString& LookupGroupName(int nGroupId)
{
int groupIdx = m_GroupNames.FindKey(nGroupId);
if (groupIdx==-1)
{
static const CString emptyStr;
return emptyStr;
}
return m_GroupNames.GetValueAt(groupIdx);
}
};
 

int CALLBACK SortFuncGroup(int nLeftId, int nRightId, void* lParamSort)
{
PARAMSORT& ps = *(PARAMSORT*)lParamSort;
 
const CString& left = ps.LookupGroupName(nLeftId);
const CString& right = ps.LookupGroupName(nRightId);
 
if (ps.m_Ascending)
return _tcscmp( left, right );
else
return _tcscmp( right, left );
}
}
void CnList::PreSubclassWindow()
{
CListCtrl::PreSubclassWindow();
 
// Focus retangle is not painted properly without double-buffering
#if (_WIN32_WINNT >= 0x501)
SetExtendedStyle(LVS_EX_DOUBLEBUFFER | GetExtendedStyle());
#endif
SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT);
SetExtendedStyle(GetExtendedStyle() | LVS_EX_HEADERDRAGDROP);
SetExtendedStyle(GetExtendedStyle() | LVS_EX_GRIDLINES);

// Enable Vista-look if possible
EnableWindowTheme(GetSafeHwnd(), L"ListView", L"Explorer", NULL);
}
BOOL CnList::IsGroupStateEnabled()
{
if (!IsGroupViewEnabled())
return FALSE;
 
OSVERSIONINFO osver = {0};
osver.dwOSVersionInfoSize = sizeof(osver);
GetVersionEx(&osver);
WORD fullver = MAKEWORD(osver.dwMinorVersion, osver.dwMajorVersion);
if (fullver < 0x0600)
return FALSE;
 
return TRUE;
}
BOOL CnList::SetGroupTitleImage(int nGroupID, int nImage, const CString& topDesc, const CString& bottomDesc)
{
if (!IsGroupStateEnabled())
return FALSE;
 
#if _WIN32_WINNT >= 0x0600
LVGROUP lg = {0};
lg.cbSize = sizeof(lg);
lg.mask = LVGF_TITLEIMAGE;
lg.iTitleImage = nImage; // Index of the title image in the control imagelist.
 
#ifdef UNICODE
if (!topDesc.IsEmpty())
{
// Top description is drawn opposite the title image when there is
// a title image, no extended image, and uAlign==LVGA_HEADER_CENTER.
lg.mask |= LVGF_DESCRIPTIONTOP;
// lg.pszDescriptionTop = (LPWSTR)(LPCTSTR)topDesc;
lg.cchDescriptionTop = topDesc.GetLength();
}
if (!bottomDesc.IsEmpty())
{
// Bottom description is drawn under the top description text when there is
// a title image, no extended image, and uAlign==LVGA_HEADER_CENTER.
lg.mask |= LVGF_DESCRIPTIONBOTTOM;
lg.pszDescriptionBottom = (LPWSTR)(LPCTSTR)bottomDesc;
lg.cchDescriptionBottom = bottomDesc.GetLength();
}
#else
CComBSTR bstrTopDesc = topDesc;
CComBSTR bstrBottomDesc = bottomDesc;
if (!topDesc.IsEmpty())
{
lg.mask |= LVGF_DESCRIPTIONTOP;
lg.pszDescriptionTop = bstrTopDesc;
lg.cchDescriptionTop = bstrTopDesc.Length();
}
if (!bottomDesc.IsEmpty())
{
lg.mask |= LVGF_DESCRIPTIONBOTTOM;
lg.pszDescriptionBottom = bstrBottomDesc;
lg.cchDescriptionBottom = bstrBottomDesc.Length();
}
#endif
 
if (SetGroupInfo(nGroupID, (PLVGROUP)&lg)==-1)
return FALSE;
 
return TRUE;
#else
return FALSE;
#endif
}

BOOL CnList::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default

CRect rect;
CnList::GetClientRect(rect);
 
POINT mypoint;

CBrush brush0(m_colRow1);
CBrush brush1(m_colRow2);
 
int chunk_height=GetCountPerPage();
pDC->FillRect(&rect,&brush1);
 
for (int i=0;i<=chunk_height;i++)
{


GetItemPosition(i,&mypoint);
rect.top=mypoint.y ;
GetItemPosition(i+1,&mypoint);
rect.bottom =mypoint.y;
pDC->FillRect(&rect,i %2 ? &brush1 : &brush0);
 

}
 
brush0.DeleteObject();
brush1.DeleteObject();
 
return FALSE;
}
void CnList::CollapseAllGroups()
{
if (!IsGroupStateEnabled())
return;
 
// Loop through all rows and find possible groups
for(int nRow=0; nRow<getitemcount();> {
int nGroupId = GetRowGroupId(nRow);
if (nGroupId!=-1)
{
if (!HasGroupState(nGroupId,LVGS_COLLAPSED))
{
SetGroupState(nGroupId,LVGS_COLLAPSED);
}
}
}
}
BOOL CnList::SetGroupState(int nGroupId, DWORD dwState)
{
if (!IsGroupStateEnabled())
return FALSE;
 
LVGROUP lg = {0};
lg.cbSize = sizeof(lg);
lg.mask = LVGF_STATE;
lg.state = dwState;
lg.stateMask = dwState;
 
#ifdef LVGS_COLLAPSIBLE
// Maintain LVGS_COLLAPSIBLE state
if (HasGroupState(nGroupId, LVGS_COLLAPSIBLE))
lg.state |= LVGS_COLLAPSIBLE;
#endif
 
if (SetGroupInfo(nGroupId, (PLVGROUP)&lg)==-1)
return FALSE;
 
return TRUE;
}
BOOL CnList::HasGroupState(int nGroupId, DWORD dwState)
{
LVGROUP lg = {0};
lg.cbSize = sizeof(lg);
lg.mask = LVGF_STATE;
lg.stateMask = dwState;
if ( GetGroupInfo(nGroupId, (PLVGROUP)&lg) == -1)
return FALSE;
 
return lg.state==dwState;
}
void CnList::CustDraw( NMHDR * pNMHDR, LRESULT * pResult )
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast(pNMHDR);
NMTVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR );
switch( pNMCD->dwDrawStage )
{
case CDDS_PREPAINT:
// Item prepaint notification.
*pResult= CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
if( ( CDIS_SELECTED == ( pNMCD->uItemState & CDIS_SELECTED )))
{
pNMCD->uItemState = CDIS_DEFAULT;
pLVCD->clrText = mForeColor;
pLVCD->clrTextBk = mBkColor;
}
else
{
COLORREF crText = RGB(0,0,0);
COLORREF mBkColor = RGB(255,255,0);
 
if ((pLVCD->nmcd.dwItemSpec %2) == 0) // even lines
{
crText = RGB(0,0,0);
mBkColor = RGB(0,255,255);
}
pLVCD->clrText = crText;
pLVCD->clrTextBk = mBkColor;
}
}
break;
 
default:
*pResult = CDRF_DODEFAULT;
break;
}

}
IMPLEMENT_DYNAMIC(MyList, CListCtrl)
 
MyList::MyList():mBkColor(RGB(255,0,255)),
mForeColor(RGB(0,255,255))
{
 
}
 
MyList::~MyList()
{
}
 

BEGIN_MESSAGE_MAP(MyList, CListCtrl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnNMCustomdraw)
END_MESSAGE_MAP()
 

// MyList message handlers
 

 
void MyList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast(pNMHDR);
NMTVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR );
switch( pNMCD->dwDrawStage )
{
case CDDS_PREPAINT:
// Item prepaint notification.
*pResult= CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
if( ( CDIS_SELECTED == ( pNMCD->uItemState & CDIS_SELECTED )))
{
pNMCD->uItemState = CDIS_DEFAULT;
pLVCD->clrText = mForeColor;
pLVCD->clrTextBk = mBkColor;
}
else
{
COLORREF crText = RGB(0,0,0);
COLORREF mBkColor = RGB(255,255,0);
 
if ((pLVCD->nmcd.dwItemSpec %2) == 0) // even lines
{
crText = RGB(0,0,0);
mBkColor = RGB(0,255,255);
}
pLVCD->clrText = crText;
pLVCD->clrTextBk = mBkColor;
}
}
break;
 
default:
*pResult = CDRF_DODEFAULT;
break;
}
}
 

// Using Source Files here Displaying data in CList control in required manner for me...!!??
 

// NBtq2Dlg.cpp : implementation file
 
#include "stdafx.h"
#include "NBtq2.h"
#include "NBtq2Dlg.h"
#include "DlgProxy.h"
#include "SourceDeclaration.h"
#include "afxwin.h"
#include "WinDef.h"
#include "LVCustDraw.h"
#include "Wizar.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
 
// CAboutDlg dialog used for App About
 
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
 
// Dialog Data
enum { IDD = IDD_ABOUTBOX };
 
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
 
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
 

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
 
// CNBtq2Dlg dialog
 
IMPLEMENT_DYNAMIC(CNBtq2Dlg, CDialog);
 
CNBtq2Dlg::CNBtq2Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CNBtq2Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pAutoProxy = NULL;
}
 
CNBtq2Dlg::~CNBtq2Dlg()
{
// If there is an automation proxy for this dialog, set
// its back pointer to this dialog to NULL, so it knows
// the dialog has been deleted.
if (m_pAutoProxy != NULL)
m_pAutoProxy->m_pDialog = NULL;
}
 
void CNBtq2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ctlListView);

}
 
BEGIN_MESSAGE_MAP(CNBtq2Dlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_CLOSE()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CNBtq2Dlg::OnLvnItemchangedList1)

ON_BN_CLICKED(IDCANCEL, &CNBtq2Dlg::OnBnClickedCancel)
ON_BN_CLICKED(IDOK, &CNBtq2Dlg::OnBnClickedOk)
END_MESSAGE_MAP()
 

// CNBtq2Dlg message handlers
 
BOOL CNBtq2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
 
// Add "About..." menu item to system menu.
 
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
 
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
 
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
 
// TODO: Add extra initialization here

COLORREF a=100,b=175;

m_ctlListView.InsertColumn(0, _T(" PART NO "), LVCFMT_LEFT, 100);
m_ctlListView.InsertColumn(1, _T(" DESCRIPTION "), LVCFMT_LEFT, 140);
m_ctlListView.InsertColumn(2, _T(" "), LVCFMT_RIGHT, 0);


// Insert data into list-control by copying from datamodel
static CString text[6][3]= {
_T ("P1"), _T ("D1"), _T("G1"),
_T ("P2"), _T ("D2"), _T("G1"),
_T ("P3"), _T ("D3"), _T("G2"),
_T ("P4"), _T ("D4"), _T("G2"),
_T ("P5"), _T ("D5"), _T("G3"),
_T ("P6"), _T ("D6"), _T("G3")
};

bool TurnOn =1;
 
m_ctlListView.SetExtendedStyle(LVS_EX_FULLROWSELECT);
 

for (int i=0; i<6; i++)
{
 

m_ctlListView.InsertItem (i, text[i][0]);

m_ctlListView.SetItemText (i, 1, text[i][1]);

m_ctlListView.SetItemText (i, 2, text[i][2]);


}
m_ctlListView.GroupByColumn(2);

m_ctlListView.CollapseAllGroups();

return TRUE; // return TRUE unless you set the focus to a control
}
 
void CNBtq2Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
 
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
 
void CNBtq2Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
 
SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);
 
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
 
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
 
// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CNBtq2Dlg::OnQueryDragIcon()
{
return static_cast(m_hIcon);
}
 
// Automation servers should not exit when a user closes the UI
// if a controller still holds on to one of its objects. These
// message handlers make sure that if the proxy is still in use,
// then the UI is hidden but the dialog remains around if it
// is dismissed.
 
void CNBtq2Dlg::OnClose()
{

if (CanExit())
CDialog::OnClose();
}
 
void CNBtq2Dlg::OnOK()
{
if (CanExit())
CDialog::OnOK();
}
 
void CNBtq2Dlg::OnCancel()
{
if (CanExit())
CDialog::OnCancel();

}
 
BOOL CNBtq2Dlg::CanExit()
{
// If the proxy object is still around, then the automation
// controller is still holding on to this application. Leave
// the dialog around, but hide its UI.
if (m_pAutoProxy != NULL)
{
ShowWindow(SW_HIDE);
return FALSE;
}
 
return TRUE;
}
 

void CNBtq2Dlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;
}
 

 

/////////////////////////////////////////////////////////////////////////////
// CLVCustomDrawApp
 
BEGIN_MESSAGE_MAP(CLVCustomDrawApp, CWinApp)
//{{AFX_MSG_MAP(CLVCustomDrawApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
 
/////////////////////////////////////////////////////////////////////////////
// CLVCustomDrawApp construction
 
CLVCustomDrawApp::CLVCustomDrawApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
 
/////////////////////////////////////////////////////////////////////////////
// The one and only CLVCustomDrawApp object
 
//CLVCustomDrawApp theApp;
 
/////////////////////////////////////////////////////////////////////////////
// CLVCustomDrawApp initialization
 
BOOL CLVCustomDrawApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
 
CWizard dlg ( _T("") );
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
 
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
void CNBtq2Dlg::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
OnCancel();
}
 

 
void CNBtq2Dlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
OnOK();
}
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 3

BOOL CLVCustomDrawApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

CWizard dlg ( _T("") );
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
void CNBtq2Dlg::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
OnCancel();
}

 
void CNBtq2Dlg::OnBnClickedButton3()
{
    // TODO: Add your control notification handler code here

    CNBtq2Dlg dlg;
 
    dlg.DoModal();
 

 
}
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 4

BOOL CLVCustomDrawApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

CWizard dlg ( _T("") );
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
void CNBtq2Dlg::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
OnCancel();
}

 
void CNBtq2Dlg::OnBnClickedButton3()
{
    // TODO: Add your control notification handler code here

    CNBtq2Dlg dlg;
 
    dlg.DoModal();
 

 
}
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 5,130
1 DamithSL 4,237
2 Maciej Los 3,700
3 Kornfeld Eliyahu Peter 3,470
4 Sergey Alexandrovich Kryukov 2,846


Advertise | Privacy | Mobile
Web04 | 2.8.141216.1 | Last Updated 27 Jun 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100