我的以下代码有问题

int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
    {
        return -1;
    }

    DWORD dwStyle = LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | WS_CLIPSIBLINGS | WS_CHILD;

    CMFCListCtrl TempCtrl;
    TempCtrl.Create(dwStyle, CRect(0, 0, 0, 0), this, IDC_FILTERLIST);
    CMFCHeaderCtrl& HeaderCtrl = TempCtrl.GetHeaderCtrl();
    if (!::IsWindow(HeaderCtrl.GetSafeHwnd()))
    {
        AfxMessageBox("Failed to create CMFCListCtrl properly!");
    }

    ....

CMFCListCtrl的 header 控件部分未正确创建/初始化。有人知道我在做什么错吗?任何帮助,将不胜感激。

最佳答案

我注意到您正在CView派生的类中创建一个控件。请注意,该ID必须从值AFX_IDW_PANE_FIRST开始。否则它将失败。只需在Google AFX_IDW_PANE_FIRST上搜索,您就会找到原因的解释。

因此,只需将您的行替换为:

TempCtrl.Create(dwStyle, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST);

关于c++ - 如何在另一个窗口中正确创建CMFCListCtrl?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13842238/

10-12 19:16