我建立一个sdi的工程,去掉了文档/视图模式支持,就生成了一个继承CWnd的类,CChildView和一个继承CFrameWnd的类,CMainFrame
我想在CChildView里面建立一个listctrl,在oncreate写了这些代码:
CRect rect;
GetClientRect(&rect);
if(!m_ltcMember.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|WS_EX_TOPMOST,rect,this,1))
return -1;
LV_COLUMN column;
column.pszText=L"ClientID";
column.mask=LVCF_TEXT;
m_ltcMember.InsertColumn(0,&column);
m_ltcMember.SetColumnWidth(0,100);
但是没反应,调试的时候这些也执行了.
写在onpaint里面就可以,
而且这些写在mainframe里面也可以,我想写在childview里面,怎么办?

解决方案 »

  1.   

    并且如果childview的oncreate里面创建了toolbar,statusbar也可以显示:
    if (CWnd::OnCreate(lpCreateStruct) == -1)
    return -1; // TODO:  Add your specialized creation code here
    if (!m_wndToolBar.CreateEx(this) ||
    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
    TRACE0("未能创建工具栏\n");
    return -1;      // 未能创建
    }

    if (!m_wndReBar.Create(this) ||
    !m_wndReBar.AddBar(&m_wndToolBar) )
    {
    TRACE0("未能创建 Rebar\n");
    return -1;      // 未能创建
    } if (!m_wndStatusBar.Create(this) ||
    !m_wndStatusBar.SetIndicators(indicators,
      sizeof(indicators)/sizeof(UINT)))
    {
    TRACE0("未能创建状态栏\n");
    return -1;      // 未能创建
    } CRect rect;
    GetClientRect(&rect);
    if(!m_ltcMember.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|WS_EX_TOPMOST,rect,this,1))
    return -1;
    LV_COLUMN column;
    column.pszText=L"ClientID";
    column.mask=LVCF_TEXT;
    m_ltcMember.InsertColumn(0,&column);
    m_ltcMember.SetColumnWidth(0,100);
    return 0;这是怎么回事啊,郁闷死了
      

  2.   

    GetClientRect(&rect);在窗口刚创建的时候(OnCreate()中),客户区是没有大小的。你可以跟踪看看rect的值。因此,创建的子窗口,要么给定大小,要么在OnSize中调整。
      

  3.   

    好像不是这个样子的,我跟踪过rect,有值rect {top=0x00000000 bottom=0x000002b6 left=0x00000000 right=0x00000377} CRect
    并且就算你指定大小,也不能显示,...
    还有弱弱的问一句,怎么样生成那个窗口后再调整,我没看见那个函数啊?是SetWindowRgn吗?
      

  4.   

    ...........真不好意思,我不知道怎么刚刚编译又可以了,显示了listctrl...
    弄得我糊里糊涂了,我根本没改哪个地方啊...
    我知道更改窗口函数了,movewindow();