关于网友提出的“ CTabSheet类,插入页位置设置??”问题疑问,本网通过在网上对“ CTabSheet类,插入页位置设置??”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: CTabSheet类,插入页位置设置??
描述: 各位大哥请指点一下,按照网上的CTabSheet类方法在一个对话框中插入了一个属性页对话框,比如先建立两个子对话框CDIALOG1 page1;
CDIALOG2 page2;
CDIALOG1,CDIALOG2都是Cdialog类,然后将他们添加到主对话框的Tab控件中:
m_sheet.AddPage("1",&page1,IDD_DIALOG1) ;
m_sheet.AddPage("2",&page2,IDD_DIALOG2) ;
m_sheet.Show();
m_sheet是Tab控件的CTabSheet类的控制变量,其中子对话框位置设置的代码如下:
void CTabSheet::SetRect()
{
CRect tabRect, itemRect;
int nX, nY, nXc, nYc;
GetClientRect(&tabRect);
GetItemRect(0, &itemRect);
nX=itemRect.left;
nY=itemRect.bottom+1;
nXc=tabRect.right-itemRect.left-2;
nYc=tabRect.bottom-nY-2;
m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
for( int nCount=1; nCount < m_nNumOfPages; nCount++ )
m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
}
但是显示出来的情况是子对话框在屏幕的左上角,几乎是屏幕(0,0)的位置,跟Tab标签的位置相差甚远,
想请问一下各位大哥,应该怎样编写代码才能让子对话框正好显示在Tab标签的位置上,谢谢大家了!!!
解决方案1: SetWindowPos的坐标相对于父窗口的客户区,那你的m_pPages之类的是不是Child样式?
以上介绍了“ CTabSheet类,插入页位置设置??”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2344395.html