1

プロジェクトに CPropertySheet ベースのアプリケーションを使用したかったのですが、CPropertySheet クラスに付属するデフォルトの [OK]、[キャンセル]、[ヘルプ]、および [適用] ボタンは必要ありませんでした。したがって、OnInitDialog でこれらのウィンドウを破棄しました。参照用のコードは次のとおりです。

BOOLCProductUI::OnInitDialog()
{
    CPropertySheet::OnInitDialog();

    CRect rect;
    CButton *pTempBtn;
    CButton SaveChanges;

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(IDHELP));
    if (NULL != pTempBtn)
    {
        pTempBtn->GetWindowRect(&rect);
        pTempBtn->DestroyWindow();
    }

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(IDOK));
    if (NULL != pTempBtn)
    {
        pTempBtn->DestroyWindow();
    }

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(IDCANCEL));
    if (NULL != pTempBtn)
    {
        pTempBtn->DestroyWindow();
    }

    pTempBtn = reinterpret_cast<CButton *>(GetDlgItem(ID_APPLY_NOW));
    if (NULL != pTempBtn)
    {
        ScreenToClient(&rect);
        pTempBtn->MoveWindow(rect);
        pTempBtn->SetWindowText(_T("Save Changes"));
    }

    UpdateData(FALSE);
    return TRUE;
}

CProductUI は CPropertySheet のクラスです。
ただし、デバッグ モードで VC++2008 を使用してプログラムをコンパイルすると、
CPropertySheet::OnInitDialog();」行に Debug Assertion Failed エラー メッセージが表示され
ます。

4

2 に答える 2

-1

CPropertySheetで適用ボタンを非表示にする方法ごと。ウィンドウを破棄することは、プロパティ シートのデフォルト ボタンを非表示にするための適切な解決策ではありません。"ShowWindow()"を使用することをお勧めします。しかし、すでに showwindow() で言及したように、呼び出しが正しい場合は発生しない問題も発生します。ShowWindow() が「OnInitDialog()」関数で機能しない場合は、この関数を「OnCreate()」に移動することをお勧めします。また、機能しない場合は、.H および .CPP ファイル全体を共有してください。

于 2015-03-30T11:30:36.623 に答える