在母对话框上放个CTabCtrl:m_Tab;在m_Tab上再放一个CTabCtrl:m_Tab1;从CDHtmlDialog派生一个类:CDlgHtml;将CDlgHtml的属性Style设置为Child,Border为none;声明一个CDlgHtml的对象指针:m_pDlgHtml;m_DlgHtml被创建成m_Tab1的一页。
就这样一个程序,一运行就崩溃,试验了无数次,同样的问题。环境是vs2008.BOOL CDialog1::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化
m_Tab1.InsertItem(0,_T("Second Tab")); m_DlgHtml=(CDlgHtml *)new CDlgHtml;
m_DlgHtml->Create(IDD_DLGHTML,&m_Tab1);//程序调试在此处终崩溃 CRect rect;
m_Tab1.GetClientRect(rect);
rect.top+=20; m_DlgHtml->MoveWindow(rect);
m_DlgHtml->ShowWindow(SW_SHOW);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}我的代码放在:
http://www.namipan.com/d/o.rar/f05e19c44c2878d381453df66c8c00891cb43ecc26dd3c00
就这样一个程序,一运行就崩溃,试验了无数次,同样的问题。环境是vs2008.BOOL CDialog1::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化
m_Tab1.InsertItem(0,_T("Second Tab")); m_DlgHtml=(CDlgHtml *)new CDlgHtml;
m_DlgHtml->Create(IDD_DLGHTML,&m_Tab1);//程序调试在此处终崩溃 CRect rect;
m_Tab1.GetClientRect(rect);
rect.top+=20; m_DlgHtml->MoveWindow(rect);
m_DlgHtml->ShowWindow(SW_SHOW);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}我的代码放在:
http://www.namipan.com/d/o.rar/f05e19c44c2878d381453df66c8c00891cb43ecc26dd3c00
解决方案 »
- MFC
- 窗口类中遇到的错误,百思不得其解,请高手指点....
- 请大家帮我看一下这个函数,我优化过了,看能不能更优化一些
- ASP中使用COM组件的问题
- 吐血求救:我的语音通信程序,当发送端CPU占用率过大时,接收端会听到大量重复的话,会持续很长的时间,这是为什么?我实在是想不通,哪
- 设备有关位图/设备无关位图?
- 一个200分的老问题:如何在一台2000服务器被锁定的情况下用后台程序解除锁定?
- 我做release版,运行到这里就出错
- 应用程序框架和主框架窗口的区别??谢
- 怎样将CString转换为int型?(新手)
- 急!MSXML加载的问题!使用CFileDlg让用户选择时出错!
- #include与#import的区别???
可能的原因是IDD_DLGHTML:
IDD_DLGHTML资源必须是一个合法的对话框资源,即使它上面没有任何控件。如果在对话框资源上已经放置了浏览器控件,确保这个控件的ID是AFX_IDC_BROWSER。
http://xianexs.mail.qq.com/cgi-bin/downloadfilepart/svrid216/o.rar?svrid=216&fid=bd323d9589260798e1037a443c9621cf9ba6ced26e868562&&txf_fid=2705015f393eb60a350a51fea89b0a06a15d6c10&&txf_sid=aca74715f78e316697eaab18fd6e9aefbaffa42f提取码是c48053d0你上面所说的问题,是没有问题的,IDD_DLGHTML只是个系统生成的CDHtmlDialog对话框,我只是改了style和border属性,并未做其他任何调整。
// 异常: OCX 属性页应返回 FALSE
仔细看看这句
这里改为return FALSE就行了
但是我还不太了解问什么应该用return FALSE.
Specifies whether the application has set the input focus to one of the controls in the dialog box. If OnInitDialog returns nonzero, Windows sets the input focus to the first control in the dialog box. The application can return 0 only if it has explicitly set the input focus to one of the controls in the dialog box.从MSDN上给出的解释来看,当你把m_DlgHtml放到第二个CTabCtrl上时,焦点就在第二个TabCtrl上了,所以应该return FALSE。如果是放入的第一个TabCtrl中,程序默认焦点落在第一个TabCtrl上,于是返回TRUE就没啥问题。个人的理解,不知道对不对。