为什么LISTCTRL不听使唤?该怎么解决

为什么LISTCTRL不听使唤?
新建一个MFC工程->Single Document
没有Document/View 支持
于是系统自动生成一个APP类,一个CChildView:public CWnd类和一个CMainFrame类。

C/C++ code
int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    if (CWnd ::OnCreate(lpCreateStruct) == -1)
        return -1;
    
    m_list.SetNotifyTarget(this);
    m_list.Create(WS_CHILD|WS_VISIBLE|WS_BORDER,CRect(0,0,0,0),this,1000);
    
    m_img.Create(16,16,ILC_MASK,2,0);
    m_img.Add(LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ONLINE)));
    m_img.Add(LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_OFFLINE)));
    
    m_list.SetImageList(&m_img,LVSIL_SMALL);
    m_list.InsertColumn(0,TEXT("Sign Number"),LVCFMT_LEFT,100);
    m_list.InsertColumnWithEditBox(1,TEXT("Location"),LVCFMT_LEFT,120,-1,NULL,TRUE,TRUE,16);
    m_list.InsertColumnWithEditBox(2,TEXT("Description"),LVCFMT_LEFT,135,-1,NULL,FALSE,FALSE,14);
    m_list.InsertColumnWithDecimalEdit(3,TEXT("Price"),LVCFMT_LEFT,60,-1,NULL,FALSE,0.01f,999.99f,2);
    m_list.InsertColumnWithDecimalEdit(4,TEXT("Save"),LVCFMT_LEFT,60,-1,NULL,FALSE,0.01f,999.99f,2);
    m_list.InsertColumnWithDropdownList(5,TEXT("Product Type"),LVCFMT_LEFT,100,-1,NULL,TEXT("EA\nKG"));
    m_list.InsertColumnWithDecimalEdit(6,TEXT("Unit Price"),LVCFMT_LEFT,80,-1,NULL,FALSE,0.01f,999.99f,2);
    m_list.InsertColumnWithEditBox(7,TEXT("Unit of Measure"),LVCFMT_LEFT,120,-1,NULL,FALSE,FALSE,5);
    m_list.InsertColumnWithDropdownList(8,TEXT("Border Scroll"),LVCFMT_LEFT,100,-1,NULL,TEXT("ON\nOFF\nRUN"));
    
    m_list.InsertItem(0,TEXT("001"),1);
    m_list.SetItemText(0,1,TEXT("HALL"));
    m_list.SetItemText(0,2,TEXT("DESCRIPTION"));
    m_list.SetItemText(0,3,TEXT("18.60"));
    m_list.SetItemText(0,4,TEXT("0.40"));
    m_list.SetItemText(0,5,TEXT("KG"));
    m_list.SetItemText(0,6,TEXT("1.86"));
    m_list.SetItemText(0,7,TEXT("LITRE"));
    m_list.SetItemText(0,8,TEXT("RUN"));
    m_list.InsertItem(1,TEXT("001"),0);
    m_list.SetItemText(1,1,TEXT("HALL"));
    m_list.SetItemText(1,2,TEXT("DESCRIPTION"));
    m_list.SetItemText(1,3,TEXT("18.60"));
    m_list.SetItemText(1,4,TEXT("0.40"));
    m_list.SetItemText(1,5,TEXT("KG"));
    m_list.SetItemText(1,6,TEXT("1.86"));
    m_list.SetItemText(1,7,TEXT("LITRE"));
    m_list.SetItemText(1,8,TEXT("RUN"));
    return 0;
}



C/C++ code
void CEditableList::PreSubclassWindow() 
{
    CListCtrl::PreSubclassWindow();
    if(m_nMaxColumnsCount == 0)
    {
        m_nMaxColumnsCount = (UINT32)(GetNotifyTarget()->SendMessage(WM_REQUEST_COLUMN_COUNT,(WPARAM)GetSafeHwnd(),0));
        if(m_nMaxColumnsCount > 0xFFFF0000)
            m_nMaxColumnsCount &= 0xFFFF;
        else
            m_nMaxColumnsCount = 0;
    }
    
    m_hBrushBackground = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
    if(m_nMaxColumnsCount > 0)
    {
        m_pConfigurations = new COLUMN_CONFIGURATION[m_nMaxColumnsCount];
        ModifyStyle(LVS_ICON|LVS_SMALLICON|LVS_LIST,LVS_REPORT,SWP_FRAMECHANGED);
        SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
    }
    else
    {
        throw(TEXT("Parent must process WM_REQUEST_COLUMNS_COUNT,and return 0xFFFF0000|(max_columns_count)."));
    }
}


1问、为什么在PreSubclassWindow调用GetParent()得到的不是CChildView的指针,而是一个CTempWnd?
2问、为什么LVS_REPORT风格没有切换过来 (见下图)?
3问、我把LVS_REPORT写在m_list.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT,...)这里就OK,这是为什么?




------解决方案--------------------