NPCHard 2013-08-19 07:07
浏览 2628

VS2010 MFC tab control控件

我将标签设置在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;   
}   

}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试,帮帮忙吧
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建