如何让CPropertySheet的Apply 可用?
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呢?
...全文
相关推荐
深入浅出_CPropertySheet.doc
**高级移动**: ```cpp BOOL CMyPropSheet::OnInitDialog() { ... int ids[] = { IDOK, IDCANCEL, ID_APPLY_NOW }
C++图像处理\深入浅出 CPropertySheet属性页
标题和描述中的"深入浅出 CPropertySheet属性页"主要关注如何自定义和操作`CPropertySheet`类以适应特定的界面需求。下面我们将深入探讨这个主题:1.
关于CPropertysheet的应用理解
本文介绍了基于MFC框架的CChildView类和CLogsList类的实现细节。CChildView类通过重写PreCreateWindow和OnPaint函数自定义窗口样式和处理绘制事件。CLog
MFC属性表对话框的运行机制
在 MFC 属性表对话框中,有三个按钮:OK、Cancel 和 Apply。OK 和 Cancel 按钮的作用与普通对话框的相同,而 Apply 按钮是属性表对话框所特有的。
MFC属性表单实例
在OnOK或Apply按钮的处理函数中,使用DDX和DDV将控件的值更新回对象。7. **测试运行**:编译并运行项目,检查属性表单是否按预期工作。确保用户界面响应正确,数据交换和验证功能无误。8.


界面
