如何让CPropertySheet的Apply 可用?

gOrubby 2010-05-21 02:08:51
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呢?
...全文
156 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gOrubby 2010-05-21
  • 打赏
  • 举报
回复
可以了 结贴了
teli_eurydice 2010-05-21
  • 打赏
  • 举报
回复
SetModified(TRUE)
gOrubby 2010-05-21
  • 打赏
  • 举报
回复
身体是本钱啊 该休息就休息啊 病了boss也不给加工资
Normandie007 2010-05-21
  • 打赏
  • 举报
回复
我中午没睡觉,居然昏头了好几遍,哎,罪恶的IT
gOrubby 2010-05-21
  • 打赏
  • 举报
回复
呵呵 我试试看看 不过我还是希望系统自己去Enable这个APPLY button
Normandie007 2010-05-21
  • 打赏
  • 举报
回复
pApplyButton->EnableWindow(TRUE);
gOrubby 2010-05-21
  • 打赏
  • 举报
回复

pApplyButton->EnableWindow(SW_SHOW); ????
Normandie007 2010-05-21
  • 打赏
  • 举报
回复
不好意思
应该为
pApplyButton->EnableWindow(false);
Normandie007 2010-05-21
  • 打赏
  • 举报
回复
OnChanged函数里面添加
CWnd* pApplyButton = GetDlgItem (ID_APPLY_NOW);
ASSERT (pApplyButton);
pApplyButton->ShowWindow (SW_SHOW);

不可以吗
gOrubby 2010-05-21
  • 打赏
  • 举报
回复
这么快就沉了啊 郁闷耨

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧