如何实现竖排的属性页

lidopaul 2003-10-26 10:52:05
一般的是横的属性页,竖的该怎么办呢,请详细说明
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lidopaul 2003-10-27
  • 打赏
  • 举报
回复
可是CTabCtrl类是什么呀,我用
class CSheet : public CPropertySheet
{
public:

CPropertyPage Page1;
CPropertyPage Page2;
CPropertyPage Page3;
CPropertyPage Page4;
CMenu Menu;
CSheet m_tab;
~~~~~~~~~~~~~如此定义出错,如你所说则不知道CTabCtrl 是什么
........
}
MilitaryMiniatures 2003-10-27
  • 打赏
  • 举报
回复
你要在你的sheet类里面声明如下的变量:
CTabCtrl m_tab;
lidopaul 2003-10-27
  • 打赏
  • 举报
回复
up
lidopaul 2003-10-27
  • 打赏
  • 举报
回复
m_tab未定意,可是定义CSheet m_tab又说
error C2460: 'm_tab' : uses 'CSheet', which is being defined
F:\VC++\\TheApp.cpp(5) : see declaration of 'CSheet'
请问为什么
lidopaul 2003-10-27
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2397/2397260.xml?temp=.9214441
可否把你的源程序发给我一份,谢谢了
happywolf530@163.com
MilitaryMiniatures 2003-10-27
  • 打赏
  • 举报
回复
就是偷梁换柱了。注意,换的时候,tab控件的id不能改变。
MilitaryMiniatures 2003-10-27
  • 打赏
  • 举报
回复
sigh,努力了好长时间。
本来打算简单地改变tab的属性就好了,结果这样试验,效果不好,尤其tab的文字设置不对,试图重新画,好像也不好,最后,采用了重新创建tab的方法。
对了,方法就是要重载CPropertySheet::OnInitDialog()这个函数,然后在其中做手脚啊。例子代码如下:

BOOL CMyPropertySheet::OnInitDialog()
{
/*
// 试图直接改变tab的属性,结果,可以做到,然而效果不好。
CTabCtrl* ptab = (CTabCtrl*)GetDlgItem(AFX_IDC_TAB_CONTROL);
if (ptab != NULL)
{
ptab->ModifyStyle(0, TCS_VERTICAL, 0);
}
*/

// try to re-create a tab ctrl
// destroy the old one
// 注意,在删除tab之前,必须确保它没有子控件,否则,要进行特殊处理
RECT rect;
DWORD dw = WS_CHILD | WS_VISIBLE;
CTabCtrl* pOld = (CTabCtrl*)GetDlgItem(AFX_IDC_TAB_CONTROL);
if (pOld != NULL)
{
pOld->GetWindowRect(&rect);
ScreenToClient(&rect);
dw = pOld->GetStyle();
pOld->DestroyWindow();
}
// now, try to create a new
m_tab.Create(dw | TCS_VERTICAL, rect, this, AFX_IDC_TAB_CONTROL);
// 处理字体
CFont* pFont = GetFont();
if (pFont != NULL) m_tab.SetFont(pFont);

BOOL bResult = CPropertySheet::OnInitDialog();

return bResult;
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧