//建立各属性页
m_tabPages[0]=new CAnswer;
m_tabPages[0]->Create(IDD_ANSWER,&m_Tab);//m_dialogAnswer.Create(IDD_ANSWER,&m_Tab);
//设置页面的位置在m_tablist控件范围内
CRect rc;
m_Tab.GetClientRect(&rc);
ScreenToClient(&rc);//ScreenToClient(rc);//ClientToScreen(
rc.top += 21;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
m_tabPages[0]->MoveWindow(rc);
m_tabPages[0]->ShowWindow(SW_SHOW);
哪里错了?
m_tabPages[0]=new CAnswer;
m_tabPages[0]->Create(IDD_ANSWER,&m_Tab);//m_dialogAnswer.Create(IDD_ANSWER,&m_Tab);
//设置页面的位置在m_tablist控件范围内
CRect rc;
m_Tab.GetClientRect(&rc);
ScreenToClient(&rc);//ScreenToClient(rc);//ClientToScreen(
rc.top += 21;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
m_tabPages[0]->MoveWindow(rc);
m_tabPages[0]->ShowWindow(SW_SHOW);
哪里错了?
==>
换成m_tabPages[0]->ClientToScreen(&rc);
下面的那个
ScreenToClient(&rc);//ScreenToClient(rc);//ClientToScreen(去掉去掉
不用这行会怎么样
那应该用m_Tab.ClientToScreen
m_tabPages[0]=new CAnswer;
m_tabPages[0]->Create(IDD_ANSWER,&m_Tab);//m_dialogAnswer.Create(IDD_ANSWER,&m_Tab);
//设置页面的位置在m_tablist控件范围内
CRect rc;
m_Tab.GetClientRect(&rc);
m_Tab.ClientToScreen(&rc);rc.top += 21;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
m_tabPages[0]->MoveWindow(&rc,TRUE);
m_tabPages[0]->ShowWindow(SW_SHOW);
这样子还是不行了
这个不需要。 你取的就是clientrect。
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx
楼主是不CAnswer 的实现有问题
// 这样是可以的,m_tab是CTabCtrl类对象,静态关联了CTabCtrl控件,CNewDlg是对话框,child,none风格
m_tab.InsertItem(0, _T("AAA"), 0);
CNewDlg* pDlg = new CNewDlg;
pDlg->Create(IDD_DIALOG1, &m_tab);
CRect rc;
m_tab.GetClientRect(rc);
rc.DeflateRect(30, 30);
pDlg->MoveWindow(rc);
pDlg->ShowWindow(SW_SHOW);
m_Tab.InsertItem(1,_T("test2")); m_dlg1.Create(IDD_DIALOG1,&m_Tab);
//m_dlg1.
CRect rc;
m_Tab.GetClientRect(&rc);
//m_Tab.ClientToScreen(&rc);rc.top += 21;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
m_dlg1.MoveWindow(&rc,TRUE);
m_dlg1.ShowWindow(SW_SHOW);test ok!
remember to set the dialog style to child!
m_Tab.InsertItem(0,_T("test"));
m_Tab.InsertItem(1,_T("test2"));
m_dlg1= new CDialog;
m_dlg1->Create(IDD_DIALOG1,&m_Tab);
//m_dlg1.
CRect rc;
m_Tab.GetClientRect(&rc);
//m_Tab.ClientToScreen(&rc);rc.top += 21;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
m_dlg1->MoveWindow(&rc,TRUE);
m_dlg1->ShowWindow(SW_SHOW);public:
CTabCtrl m_Tab;
CDialog* m_dlg1;
这样也可以