Tab控件显示的问提

时间:2022-04-09 16:17:55
头文件相关代码:

#if !defined(AFX_DISHDLG_H__6AF25614_CFFE_494C_864F_C6F1AF65B1DF__INCLUDED_)
#define AFX_DISHDLG_H__6AF25614_CFFE_494C_864F_C6F1AF65B1DF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DeskPage.h"
#include "DishPage.h"
#include "OrderPage.h"
#include "PayPage.h"


/////////////////////////////////////////////////////////////////////////////
// CDishDlg dialog

class CDishDlg : public CDialog
{
// Construction
public:
CDishDlg(CWnd* pParent = NULL); // standard constructor
CDishPage m_Page1;
CDeskPage m_page2;
COrderPage m_page3;
CPayPage m_page4;


----------------------------------------------------------------------------------------------------



cpp文件:

BOOL CDishDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here    Tab空间中的四个标签
m_tabDish.InsertItem(0,"菜单管理");
m_tabDish.InsertItem(1,"餐桌管理");
m_tabDish.InsertItem(2,"订单管理");
m_tabDish.InsertItem(3,"付费管理");


m_Page1.Create(IDD_DIALOG_DISH,&m_tabDish);
m_page2.Create(IDD_DIALOG_DESK,&m_tabDish);
m_page3.Create(IDD_DIALOG_ORDER,&m_tabDish);
//m_page4.Create(IDD_DIALOG_PAY,&m_tabDish);              //当我把这行的注释取消的话,就会出线错误了
//如下面的图1

m_Page1.CenterWindow();
m_page2.CenterWindow();
m_page3.CenterWindow();
//m_page4.CenterWindow();

m_Page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
m_page3.ShowWindow(SW_HIDE);
//m_page4.ShowWindow(SW_HIDE);


return TRUE;  // return TRUE  unless you set the focus to a control
}

void CDishDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CDishDlg::OnPaint() 
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CDishDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void CDishDlg::OnSelchangeTabDish(NMHDR* pNMHDR, LRESULT* pResult) 
{
switch(m_tabDish.GetCurSel())
{
case 0:
{  
m_Page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
m_page3.ShowWindow(SW_HIDE);
//m_page4.ShowWindow(SW_HIDE);
break;
}
case 1:
{
m_Page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
m_page3.ShowWindow(SW_HIDE);
//m_page4.ShowWindow(SW_HIDE);
break;
}
case 2:
{
m_Page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_HIDE);
m_page3.ShowWindow(SW_SHOW);
//m_page4.ShowWindow(SW_HIDE);
break;
}
/*case 3:
{
m_Page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_HIDE);
m_page3.ShowWindow(SW_HIDE);
m_page4.ShowWindow(SW_SHOW);
break;
}*/
}

*pResult = 0;
}







同时,Tab标签的四个子页面老是对不准,有什么办法可以看起来整齐些。。

好像是要定格位置什么的,具体的代码如何,再那里添加,求教下


图一:
Tab控件显示的问提

图二:标签对不齐...

Tab控件显示的问提

13 个解决方案

#1


图片看不见,悲剧啊,先帮顶了

#2


引用 1 楼 tiger9991 的回复:
图片看不见,悲剧啊,先帮顶了


现在可以看见了吧。。

#3


引用 2 楼 shenyulv 的回复:
引用 1 楼 tiger9991 的回复:

图片看不见,悲剧啊,先帮顶了


现在可以看见了吧。。

那是因为你CTabCtrl上的对话框的显示区域没有设置好,太靠上了。。。

#4


引用 3 楼 visualeleven 的回复:
引用 2 楼 shenyulv 的回复:
引用 1 楼 tiger9991 的回复:

图片看不见,悲剧啊,先帮顶了


现在可以看见了吧。。

那是因为你CTabCtrl上的对话框的显示区域没有设置好,太靠上了。。。


也就是说要移动下吗?是手动的把空间移动下,还是要编写什么代码?

#5


该回复于2010-10-19 10:31:17被版主删除

#6


我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx

#7


我在ctabctrl类里面也有个问题,就是setitem重新设置标签名称后,会把我以前在标签上画的按钮给隐藏掉,我就算重新movewindow按钮也无效,这个问题怎么解决啊,有高手回答下吗

#8


引用 6 楼 xianglitian 的回复:
我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx


谢谢,这个我看过了,可以还是不能解决标签不对称的问题呀。。

#9


引用 8 楼 shenyulv 的回复:
引用 6 楼 xianglitian 的回复:

我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx


谢谢,这个我看过了,可以还是不能解决标签不对称的问题呀。。

lz你所说的标签不对称是什么意思?

#10


引用 9 楼 visualeleven 的回复:
引用 8 楼 shenyulv 的回复:
引用 6 楼 xianglitian 的回复:

我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx


谢谢,这个我看过了,可以还是不能解决标签不对称的问题呀。。

lz你所说的标签不对称是什么意思?

是啊
怎么个标签不对称

#11


怎么个标签不对称

---------------------
是我表达的不清楚。其实是下面页面会把“菜单管理”,“餐桌管理”,“点餐管理”这些标签覆盖掉,我重新把对话框调正大小,还是没有办法。。。。所以不知道有没哟什么好的办法,可以讲哪些子页面整齐些。

#12


通过MoveWindow调整啊
我提供的博客里有例子啊

#13


好的,这个已经明白了,谢谢你们了。。

#1


图片看不见,悲剧啊,先帮顶了

#2


引用 1 楼 tiger9991 的回复:
图片看不见,悲剧啊,先帮顶了


现在可以看见了吧。。

#3


引用 2 楼 shenyulv 的回复:
引用 1 楼 tiger9991 的回复:

图片看不见,悲剧啊,先帮顶了


现在可以看见了吧。。

那是因为你CTabCtrl上的对话框的显示区域没有设置好,太靠上了。。。

#4


引用 3 楼 visualeleven 的回复:
引用 2 楼 shenyulv 的回复:
引用 1 楼 tiger9991 的回复:

图片看不见,悲剧啊,先帮顶了


现在可以看见了吧。。

那是因为你CTabCtrl上的对话框的显示区域没有设置好,太靠上了。。。


也就是说要移动下吗?是手动的把空间移动下,还是要编写什么代码?

#5


该回复于2010-10-19 10:31:17被版主删除

#6


我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx

#7


我在ctabctrl类里面也有个问题,就是setitem重新设置标签名称后,会把我以前在标签上画的按钮给隐藏掉,我就算重新movewindow按钮也无效,这个问题怎么解决啊,有高手回答下吗

#8


引用 6 楼 xianglitian 的回复:
我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx


谢谢,这个我看过了,可以还是不能解决标签不对称的问题呀。。

#9


引用 8 楼 shenyulv 的回复:
引用 6 楼 xianglitian 的回复:

我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx


谢谢,这个我看过了,可以还是不能解决标签不对称的问题呀。。

lz你所说的标签不对称是什么意思?

#10


引用 9 楼 visualeleven 的回复:
引用 8 楼 shenyulv 的回复:
引用 6 楼 xianglitian 的回复:

我给你推荐过吧
使用tabctrl可以参考
http://blog.csdn.net/xianglitian/archive/2010/05/23/5618814.aspx


谢谢,这个我看过了,可以还是不能解决标签不对称的问题呀。。

lz你所说的标签不对称是什么意思?

是啊
怎么个标签不对称

#11


怎么个标签不对称

---------------------
是我表达的不清楚。其实是下面页面会把“菜单管理”,“餐桌管理”,“点餐管理”这些标签覆盖掉,我重新把对话框调正大小,还是没有办法。。。。所以不知道有没哟什么好的办法,可以讲哪些子页面整齐些。

#12


通过MoveWindow调整啊
我提供的博客里有例子啊

#13


好的,这个已经明白了,谢谢你们了。。