proe二次开发所做界面中Tab Control控件无法正常显示

jwhjwh1111 2016-08-11 04:57:52
想请教大家关于tab control控件的一些问题。proe注册完dat文件后,第一次点击子菜单

显示的对话框是正常的。

但是第二次点击。就会变成

可以看到,没有正常情况下应有的的3个标签。
我依照的是这两篇文章。
http://www.cnblogs.com/fanghui/archive/2012/06/13/2774284.html
http://blog.csdn.net/penpenandtongtong/article/details/7852469

第二个问题是点击图中的“确定”和“取消”中的“取消”时,整个页面会变完全空白。

正常情况下,如果不对“确定”和“取消”添加响应函数,点击这两个按钮窗口就会关闭吧。我现在想要的效果就是点击“取消”,窗口就会关闭,而不是变空白。
这个问题,我在一个帖子里找到了可能的答案(http://bbs.csdn.net/topics/340178356#post-342367334),但是不知道该怎么应用到我的案例中,因为基础太差。我是为了做二次开发的一个小项目,才学习C++和MFC控件的,之前只有几年前学习的C语言的一点皮毛知识。

先谢谢大家了!希望大家能给出一些解决办法或者解决思路。或者指点下,该看哪部分知识(如果可能,麻烦具体到哪本书的哪一章节。。)
...全文
869 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-08-12
  • 打赏
  • 举报
回复
后面带个?的意思就是具体咋办你看着办。
jwhjwh1111 2016-08-12
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
试试设置Windows使用经典视图?
这个方法不太适合吧。
// MyTab.cpp : 实现文件
//

#include "stdafx.h"
#include "yangli.h"
#include "MyTab.h"

#include "tyl.h"
#include "xxj.h"
#include "xxl.h"

xxj m_para1;
xxl m_para2;
tyl m_para3;

// MyTab 对话框

IMPLEMENT_DYNAMIC(MyTab, CDialog)

MyTab::MyTab(CWnd* pParent /*=NULL*/)
	: CDialog(MyTab::IDD, pParent)
{
	
}

MyTab::~MyTab()
{
}

void MyTab::DoDataExchange(CDataExchange* pDX)//窗口初始化函数
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_TABMAIN, m_tabMain);


	//添加选项卡
	 m_tabMain.InsertItem(0,_T("行星架"));
	 m_tabMain.InsertItem(1,_T("行星轮"));
	 m_tabMain.InsertItem(2,_T("太阳轮")); 


	 //关联对话框,并且将IDC_TABMAIN控件设为父窗口
	 m_para1.Create(IDD_DIALOG3,GetDlgItem(IDC_TABMAIN));
	 m_para2.Create(IDD_DIALOG4,GetDlgItem(IDC_TABMAIN));
	 m_para3.Create(IDD_DIALOG5,GetDlgItem(IDC_TABMAIN));

	 //--------置父窗口-------------------------
	m_para1.SetParent(GetDlgItem(IDC_TABMAIN));
	m_para2.SetParent(GetDlgItem(IDC_TABMAIN));
	m_para3.SetParent(GetDlgItem(IDC_TABMAIN));
	 

	 //获得IDC_tabMain客户区大小
	 CRect rs;
	 m_tabMain.GetClientRect(&rs);

	 //调整子对话框在父窗口中的位置,可以改动数值,使子窗体的大小合适;
	 rs.top+=20;
	 rs.bottom-=3;
	 rs.left+=2;
	 rs.right-=2;

	 //设置子对话框尺寸并移动到指定位置
	 m_para1.MoveWindow(&rs);
	 m_para2.MoveWindow(&rs);
	 m_para3.MoveWindow(&rs);

	 //分别设置隐藏和显示
	 m_para1.ShowWindow(true);
	 m_para2.ShowWindow(false);
	 m_para3.ShowWindow(false);

	 //设置默认的选项卡
	 m_tabMain.SetCurSel(0);

}


BEGIN_MESSAGE_MAP(MyTab, CDialog)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TABMAIN, &MyTab::OnTcnSelchangeTabmain)
END_MESSAGE_MAP()


// MyTab 消息处理程序



void MyTab::OnTcnSelchangeTabmain(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码

	 int CurSel = m_tabMain.GetCurSel();
	 switch(CurSel)
	 {
	 case 0:
		  m_para1.ShowWindow(true);
		  m_para2.ShowWindow(false);
		  m_para3.ShowWindow(false);
		  break;
	 case 1:
		  m_para1.ShowWindow(false);
		  m_para2.ShowWindow(true);
		  m_para3.ShowWindow(false);
		  break;
	 case 2:
		  m_para1.ShowWindow(false);
		  m_para2.ShowWindow(false);
		  m_para3.ShowWindow(true);
		  break;
	 default:;
	 } 
	*pResult = 0;
	
}
这是我的代码。MyTab.cpp是对应加了Tab Control控件的那个对话框。tyl.cpp,xxj.cpp,xxl.cpp就是3个分页面。
赵4老师 2016-08-11
  • 打赏
  • 举报
回复
试试设置Windows使用经典视图?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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