如何不让属性页切换?

vvvvvvv 2003-08-21 10:45:34
对话框中的属性页,有时候要锁定当前页,不需要用户切换到其他页,如何做到?
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nomenn 2003-10-12
  • 打赏
  • 举报
回复
其他页面设置为不可用,等要求解锁后,恢复

bager 2003-08-28
  • 打赏
  • 举报
回复
实现思想 
1、在Sheet类中定义一个变量,保存待锁定页的索引值
int m_nLastActive;
2、处理Sheet类中的TCN_SELCHANGING通知,调用GetActiveIndex()函数,判断当前要显示的页面的索引值是否与m_nLastActive相同。

3、如果索引值与m_nLastActive不同,则按如下方式发送消息,以锁定显示:
PostMessage (PSM_SETCURSEL, m_nLastActive);

实现步骤(假设我们锁定第一页,m_nLastActive值置为0)
1、覆盖Sheet类的OnNotify函数
BOOL CMyPropertySheet::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
NMHDR* pnmh = (NMHDR*)lParam;
// tab is about to change
if (TCN_SELCHANGING == pnmh->code)
// save the current page index
m_nLastActive = GetActiveIndex ();
// tab has been changed
else if (TCN_SELCHANGE == pnmh->code)
{
// get the current page index
int nCurrentPage = GetActiveIndex ();
// if current page is in our map of disabled pages
if (m_nLastActive != nCurrentPage)
// activate the previous page
PostMessage (PSM_SETCURSEL, m_nLastActive);
}
return CPropertySheet::OnNotify(wParam, lParam, pResult);
}

测试一下吧,除第一页外都被禁用了,达到了锁定第一页的目的。
对于不想所定的情况,可以在调用PostMessage (PSM_SETCURSEL, m_nLastActive);语句之前做下判断即可。


opentuxedo 2003-08-21
  • 打赏
  • 举报
回复
重载OnKillActive
或OnWizardBack,OnWizardNext

15,979

社区成员

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

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