主题:如何响应PropertySheet的确定和取消按钮
beanchcxb
[专家分:70] 发布于 2005-11-09 10:18:00
本人正在用sdk做一个程序,用到PropertySheet。
但是总不能响应到他的确定和取消按钮,请问要响应的消息是什么?
还有就是要给PropertySheet加上一个最小化按钮,请问如何加![em10]
回复列表 (共1个回复)
沙发
wgkujgg [专家分:6160] 发布于 2005-11-09 10:30:00
属性用通告消息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;
}
我来回复