Am o clasa , CListCtrlEx cu mai multe capabilitati decat CListCtrl :
Code: Select all
// ListCtrlEx.h : header file
class CListCtrlEx : public CListCtrl
{
DECLARE_DYNAMIC(CListCtrlEx)
...
...
protected:
virtual void PreSubclassWindow();
...
}
Code: Select all
// ListCtrlEx.cpp : implementation file
...
...
void CListCtrlEx::PreSubclassWindow()
{
m_clrDefBack = GetTextBkColor() | 0xFF000000;
m_clrDefText = GetTextColor();
SetExtendedStyle(LVS_EX_FULLROWSELECT);
ModifyStyle(0,LVS_REPORT);
CListCtrl::PreSubclassWindow();
}
...
...
Prototipul acestei clase CListctrlEx de aici este :
Code: Select all
// ListCtrlEx.h : header file
#include "HeaderCtrlEx.h"
class CListCtrlEx : public CListCtrl
{
DECLARE_DYNAMIC(CListCtrlEx)
CHeaderCtrlEx* GetHeaderCtrl(){return &m_wndHeader;}
...
protected:
CHeaderCtrlEx m_wndHeader;
...
virtual void PreSubclassWindow();
}
Code: Select all
void CListCtrlEx::PreSubclassWindow()
{
// TODO: Add your specialized code here and/or call the base class
HWND hWnd = ::GetWindow(m_hWnd, GW_CHILD);
ASSERT(hWnd);
if(hWnd)m_wndHeader.SubclassWindow(hWnd);
CListCtrl::PreSubclassWindow();
}
includ clasa CHeaderCtrlEx la proiectul meu , si incerc sa o atasez la clasa mea CListCtrlEx :
Code: Select all
#include "HeaderCtrlEx.h"
void CListCtrlEx::PreSubclassWindow()
{
HWND hWnd = ::GetWindow(m_hWnd, GW_CHILD);
ASSERT(hWnd);
if(hWnd)m_wndHeader.SubclassWindow(hWnd);
m_clrDefBack = GetTextBkColor() | 0xFF000000;
m_clrDefText = GetTextColor();
SetExtendedStyle(LVS_EX_FULLROWSELECT);
ModifyStyle(0,LVS_REPORT);
CListCtrl::PreSubclassWindow();
}
Code: Select all
Second Chance Assertion Failed: File wincore.cpp, Line 311
Code: Select all
// linia 311
BOOL CWnd::Attach(HWND hWndNew)
Am citit pe net articole despre cum se face subclasarea , dar nici o solutie nu merge in acest caz ...
M-as bucura mult de orice ajutor !