我建了一个单文档的工程,视图类继承了Formview,我在void CKeHuDuanView::OnInitialUpdate()//KeHuDuanView为工程名字.
里void CKeHuDuanView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
/********************************/
//初始化m_tab控件
m_tab.InsertItem(0," 11 ");
m_tab.InsertItem(1," 22 ");
m_tab.InsertItem(2," 33 ");
//建立属性页各页
page0.Create(IDD_DIALOG0,GetDlgItem(IDC_TAB1));
page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));
page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1));
//设置页面的位置在m_tab控件范围内
CRect rect;
m_tab.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=4;
rect.left+=4;
rect.right-=4;
page0.MoveWindow(&rect);
page1.MoveWindow(&rect);
page2.MoveWindow(&rect);
page1.ShowWindow(TRUE);
m_tab.SetCurSel(1);
}
在void CKeHuDuanView::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
int CurSel;
CurSel=m_tab.GetCurSel();
switch(CurSel)
{
case 0:
page0.ShowWindow(TRUE);
page1.ShowWindow(FALSE);
page2.ShowWindow(FALSE);
break;
case 1:
page0.ShowWindow(FALSE);
page1.ShowWindow(TRUE);
page2.ShowWindow(FALSE);
break;
case 2:
page0.ShowWindow(FALSE);
page1.ShowWindow(FALSE);
page2.ShowWindow(TRUE);
break;
default: ;
}
*pResult = 0; }
在下面的消息映射表里添加了消息映射.
BEGIN_MESSAGE_MAP(CKeHuDuanView, CFormView)
//{{AFX_MSG_MAP(CKeHuDuanView)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
// ON_COMMAND(IDC_TAB1,CKeHuDuanView::OnSelchangeTab1)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)//这个必须添上,不然不能响应鼠标的单击
// ON_COMMAND(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)//这个必须添上,不然不能响应鼠标的单击
END_MESSAGE_MAP()
可是现在的情况是
1)我单击Tab后,没有一点反应。以前我在基于对话框工程里就成功了。怎么回事啊?
2)我想改变Tab的位置,让它一直在左下角。以前在对话框工程里改变CRect rect;
m_tab.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=4;//比如改变这个值
rect.left+=4;
rect.right-=4;
的值就行,现在在SDI都没用了,求解。
里void CKeHuDuanView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
/********************************/
//初始化m_tab控件
m_tab.InsertItem(0," 11 ");
m_tab.InsertItem(1," 22 ");
m_tab.InsertItem(2," 33 ");
//建立属性页各页
page0.Create(IDD_DIALOG0,GetDlgItem(IDC_TAB1));
page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));
page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1));
//设置页面的位置在m_tab控件范围内
CRect rect;
m_tab.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=4;
rect.left+=4;
rect.right-=4;
page0.MoveWindow(&rect);
page1.MoveWindow(&rect);
page2.MoveWindow(&rect);
page1.ShowWindow(TRUE);
m_tab.SetCurSel(1);
}
在void CKeHuDuanView::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
int CurSel;
CurSel=m_tab.GetCurSel();
switch(CurSel)
{
case 0:
page0.ShowWindow(TRUE);
page1.ShowWindow(FALSE);
page2.ShowWindow(FALSE);
break;
case 1:
page0.ShowWindow(FALSE);
page1.ShowWindow(TRUE);
page2.ShowWindow(FALSE);
break;
case 2:
page0.ShowWindow(FALSE);
page1.ShowWindow(FALSE);
page2.ShowWindow(TRUE);
break;
default: ;
}
*pResult = 0; }
在下面的消息映射表里添加了消息映射.
BEGIN_MESSAGE_MAP(CKeHuDuanView, CFormView)
//{{AFX_MSG_MAP(CKeHuDuanView)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
// ON_COMMAND(IDC_TAB1,CKeHuDuanView::OnSelchangeTab1)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)//这个必须添上,不然不能响应鼠标的单击
// ON_COMMAND(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)//这个必须添上,不然不能响应鼠标的单击
END_MESSAGE_MAP()
可是现在的情况是
1)我单击Tab后,没有一点反应。以前我在基于对话框工程里就成功了。怎么回事啊?
2)我想改变Tab的位置,让它一直在左下角。以前在对话框工程里改变CRect rect;
m_tab.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=4;//比如改变这个值
rect.left+=4;
rect.right-=4;
的值就行,现在在SDI都没用了,求解。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货