2 lzj891013 lzj891013 于 2013.08.19 15:07 提问

VS2010 MFC tab control控件
mfc

我将标签设置在bottom时,可以显示标签并可以点击,但是对话框没有内容显示 更没有切换效果,请问这是何故?但是我设置在顶部时,一切正常!

附上简短的代码:

在OnInitDialog中如下:

SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码

CRect tabRect; // 标签控件客户区的位置和大小

m_tab.InsertItem(0, _T("JAVA开发网"));         // 插入第一个标签“鸡啄米”   
m_tab.InsertItem(1, _T("Android开发网"));// 插入第二个标签“Android开发网”

m_tab.InsertItem(2, _T("MFC开发网"));

m_dialog1.Create(IDD_DIALOG1,&m_tab);    // 创建第一个标签页   
m_dialog2.Create(IDD_DIALOG2,&m_tab); // 创建第二个标签页   

m_dialog3.Create(IDD_DIALOG3,&m_tab);
m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect

// 调整tabRect,使其覆盖范围适合放置标签页

tabRect.left += 1;

tabRect.right -= 1;

tabRect.top -= 1;

tabRect.bottom +=20;

// 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示

m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);

// 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏

m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);

m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

响应函数如下:

void Ctest26Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;

CRect tabRect; // 标签控件客户区的Rect

// 获取标签控件客户区Rect,并对其调整,以适合放置标签页   
m_tab.GetClientRect(&tabRect);   
tabRect.left += 1;   
tabRect.right -= 1;   
tabRect.top -= 1;   
tabRect.bottom += 20;   

switch (m_tab.GetCurSel())   
{   
// 如果标签控件当前选择标签为“鸡啄米”,则显示m_jzmDlg对话框,隐藏m_androidDlg对话框   
case 0:   
    m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);   
    m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);   

m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);

    break;   
// 如果标签控件当前选择标签为“Android开发网”,则隐藏m_jzmDlg对话框,显示m_androidDlg对话框   
case 1:   
    m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);   
    m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);  

m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);

break;

case 2:

m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);

m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);

m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);

break;

default:   
    break;   
}   

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!