回 帖 发 新 帖 刷新版面

主题:如何响应PropertySheet的确定和取消按钮

本人正在用sdk做一个程序,用到PropertySheet。
但是总不能响应到他的确定和取消按钮,请问要响应的消息是什么?
还有就是要给PropertySheet加上一个最小化按钮,请问如何加![em10]

回复列表 (共1个回复)

沙发

属性用通告消息WM_NOITFY 处理。
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        ATLASSERT(::IsWindow(m_hWnd));
        NMHDR* pNMHDR = (NMHDR*)lParam;

        // don't handle messages not from the page/sheet itself
        if(pNMHDR->hwndFrom != m_hWnd && pNMHDR->hwndFrom != ::GetParent(m_hWnd))
        {
            bHandled = FALSE;
            return 1;
        }

        T* pT = static_cast<T*>(this);
        LRESULT lResult = 0;
        switch(pNMHDR->code)
        {
        case PSN_SETACTIVE:
            lResult = pT->OnSetActive() ? 0 : -1;
            break;
        case PSN_KILLACTIVE:
            lResult = !pT->OnKillActive();
            break;
        case PSN_APPLY:
            lResult = pT->OnApply() ? PSNRET_NOERROR : PSNRET_INVALID_NOCHANGEPAGE;
            break;
        case PSN_RESET:
            pT->OnReset();
            break;
        case PSN_QUERYCANCEL:
            lResult = !pT->OnQueryCancel();
            break;
        case PSN_WIZNEXT:
            lResult = pT->OnWizardNext();
            break;
        case PSN_WIZBACK:
            lResult = pT->OnWizardBack();
            break;
        case PSN_WIZFINISH:
            lResult = !pT->OnWizardFinish();
            break;
        case PSN_HELP:
            pT->OnHelp();
            break;
        default:
            bHandled = FALSE;   // not handled
        }

        return lResult;
    }

我来回复

您尚未登录,请登录后再回复。点此登录或注册