如何解决PropertySheet的这个问题?

ufox 2005-07-04 05:30:08
BOOL CMyDlg::OnInitDialog()
{。。。
m_pPageDevice = new CPageDevice; // 从CpropertyPage继承,界面上只有OK和Cancel按钮
m_pPageLog = new CPageLog; // 从CpropertyPage继承,界面上只有OK和Cancel按钮
m_pSheet = new CPropertySheet;

m_pSheet->AddPage(m_pPageDevice);
m_pSheet->AddPage(m_pPageLog);
m_pSheet->Create(this, WS_CHILD|WS_VISIBLE|WS_SYSMENU );
。。。
}

CMyDlg的底部有几个我的其他按钮和Edit控件。

执行结果是:如果在两个它Tab页面间切换过,则一旦CMyDlg失去焦点就会死掉(实际上是某个地方进入了死循环,CPU占用45%左右).但是把我自己的其他几个控件全部去掉或者全隐藏起来,则没有任何问题了,如果不再者两个tab页间切换也没有任何问题。我的系统是Win2003

...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ufox 2005-07-05
  • 打赏
  • 举报
回复
呵呵,果然如此啊, goodboyws,thanks,
thank every body
gwinner 2005-07-05
  • 打赏
  • 举报
回复
呵呵,就知道是牙医,这方面他是老行家了
goodboyws 2005-07-05
  • 打赏
  • 举报
回复
//重载CPropertySheet
// CMySheet is derived from CPropertySheet
BOOL CMySheet::OnInitDialog()
{
ModifyStyleEx (0, WS_EX_CONTROLPARENT);
return CPropertySheet::OnInitDialog();
}
lsvine 2005-07-05
  • 打赏
  • 举报
回复
gz
ufox 2005-07-04
  • 打赏
  • 举报
回复
DentistryDoctor:
在什么地方设置焦点呢?我在所有的OnKillFocus中加了设置焦点的语句还是没有得到解决?
DentistryDoctor 2005-07-04
  • 打赏
  • 举报
回复
这个是MFC的bug.
CPropertySheet作为对话框的子窗口创建时就会有这个问题。

我的办法是,在程序将要失去焦点时,对其父窗口调用一次SetFocus.

15,978

社区成员

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

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