2

我在使用以下代码时遇到问题

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 的标头控制部分未正确创建/初始化。有谁知道我做错了什么?任何帮助,将不胜感激。

4

2 回答 2

1

我注意到您正在 CView 派生类中创建一个控件。请注意,id 必须从值 AFX_IDW_PANE_FIRST 开始。否则会失败。只需谷歌 AFX_IDW_PANE_FIRST,您就会找到原因。

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

TempCtrl.Create(dwStyle, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST);
于 2012-12-12T23:08:48.920 回答
0

我通过在创建时使用 WS_VISIBLE 样式解决了上述问题,但我仍然不明白为什么会这样。

于 2012-12-13T11:11:16.650 回答