如何让CPropertySheet的Apply 可用?

gOrubby gOrubby 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
class CMyPage : CPropertyPage;
class CMySheet: CPropertySheet;

CMySheet* mySheet = new CMySheet();
CMyPage* myPage = new CMyPage();
mySheet->AddPage(myPage );


当myPage有内容改变时, 我想通知父窗口mySheet的Apply按钮可用.
调用:
myPage->SetModified(TRUE)
进而调用其父类方法:
void CPropertyPage::SetModified(BOOL bChanged)
{
if (m_hWnd == NULL) // allowed for backward compatibility
return;

ASSERT(::IsWindow(m_hWnd));
ASSERT(GetParent() != NULL);

CWnd* pParentWnd = GetParent();
if (bChanged)
pParentWnd->SendMessage(PSM_CHANGED, (WPARAM)m_hWnd);
else
pParentWnd->SendMessage(PSM_UNCHANGED, (WPARAM)m_hWnd);
}


CPropertyPage会发送消息PSM_CHANGED到父窗口CMySheet* mySheet ;

重点来了:

情况1:
如果我在mySheet中定义了对PSM_CHANGED的消息处理函数如下:
ON_MESSAGE (PSM_CHANGED, OnChanged)

LRESULT CMySheet::OnChanged(WPARAM, LPARAM)
{
m_bModified = TRUE;
return 0;
}

那么父窗口会拦截这个消息, 并且Apply Button不会enable;
情况2:
如果不添加上述消息处理函数, 那么父窗口Apply Buuton 就是Enable的;(理所当然啦)

请问我怎么能够在提供消息处理函数的同时又能让Apply Buuton 变enalbe了呢?

我知道不能 Enable的原因是我自定义的CMySheet把消息PSM_CHANGED拦截了(我想这个消息本应该是CPropertySheet来处理的), 怎么才能在CMySheet::OnChanged中继续吧消息传递给CPropertySheet呢?
...全文
评论 10
收藏 已收藏
分享
返回顶部
gOrubby
界面 15,976 成员 115,866 内容