如何实现竖排的属性页 一般的是横的属性页,竖的该怎么办呢,请详细说明 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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;} 就是偷梁换柱了。注意,换的时候,tab控件的id不能改变。 http://expert.csdn.net/Expert/topic/2397/2397260.xml?temp=.9214441可否把你的源程序发给我一份,谢谢了[email protected] m_tab未定意,可是定义CSheet m_tab又说error C2460: 'm_tab' : uses 'CSheet', which is being defined F:\VC++\\TheApp.cpp(5) : see declaration of 'CSheet'请问为什么 你要在你的sheet类里面声明如下的变量:CTabCtrl m_tab; 可是CTabCtrl类是什么呀,我用class CSheet : public CPropertySheet{public: CPropertyPage Page1; CPropertyPage Page2; CPropertyPage Page3; CPropertyPage Page4; CMenu Menu; CSheet m_tab; ~~~~~~~~~~~~~如此定义出错,如你所说则不知道CTabCtrl 是什么 ........} mfc对话框中调用系统键盘hook中的问题 这种橡皮擦如何实现? PreTranslateMessage中sendmessage 1945年的8月15日 在关闭编译的工程时,提示错误!如何理解? 怎么样在文件中间插入数据?(Visual C++6.0) 如何继承CBitmapButton类 VC技术内幕第5版真的那么烂吗? 我的密码是系统随机给的,能改嘛,怎么改? MFC用了双缓存,但是快速刷新还是会闪烁 那里有VC++7.0下载 ftp下文件夹的问题
本来打算简单地改变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;
}
可否把你的源程序发给我一份,谢谢了
[email protected]
error C2460: 'm_tab' : uses 'CSheet', which is being defined
F:\VC++\\TheApp.cpp(5) : see declaration of 'CSheet'
请问为什么
CTabCtrl m_tab;
class CSheet : public CPropertySheet
{
public:
CPropertyPage Page1;
CPropertyPage Page2;
CPropertyPage Page3;
CPropertyPage Page4;
CMenu Menu;
CSheet m_tab;
~~~~~~~~~~~~~如此定义出错,如你所说则不知道CTabCtrl 是什么
........
}