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 に答える