vc2008 office2007特性包的使用心得
2010-07-10 10:26
316 查看
vc2008的office2007特性包在界面的效果上让人耳目一新,于是我尝试用了一下,发现这家伙俨然就是一个半成品,一些函数的说明居然是This topic is under construction,bug成堆,文档又少。据说在vc2010上有所改进。
1、添加工具栏类别
CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITELARGE, IDB_WRITELARGE);
2、创建面板
CMFCRibbonPanel* pPanelADDUSER = pCategoryHome->AddPanel(L"XXX", m_PanelImages.ExtractIcon(7));
3、创建面板上的菜单
CMFCRibbonButton* pBtnADDUSER = new CMFCRibbonButton(ID_ADDUSER, strTemp,1, 1);
pPanelADDUSER->Add(pBtnADDUSER);
4、状态栏中添加时间
在MainFrm的oncreate()中添加以下
CTime time;
time=CTime::GetCurrentTime();//得到当前时间
CString s=time.Format("%H:%M:%S");//转换时间格式
CMFCRibbonBaseElement* m_StatusBarTime = new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE2, s, TRUE);
m_wndStatusBar.AddExtendedElement(m_StatusBarTime, L"时间栏");
SetTimer(1,1000,NULL);
设置一个定时器
在ontimer中添加
CTime time;
time=CTime::GetCurrentTime();//得到当前时间
CString s=time.Format("%H:%M:%S");//转换时间格式
m_StatusBarTime->SetText(s);
m_StatusBarTime->SetKeys(_T("p"));
m_StatusBarTime->SetToolTipText(_T("this is a pane"));
Invalidate();//这个刷新一定要加,不然时间不会自动刷新,这个也是bug
5、Formview中GroupBox的显示bug解决办法
GroupBox的Transparent属性不要设成透明;
重载OnCtlColor,添加代码:
CRect rect;
CWnd* pWndStatic=GetDlgItem(IDC_STATIC_GROUP);
if(pWnd->GetDlgCtrlID()==IDC_STATIC_GROUP && nCtlColor== CTLCOLOR_STATIC)
{
COLORREF backColor = RGB(236, 233, 216);//这个颜色为Formview默认的面板颜色
pWndStatic->GetClientRect(&rect);
pDC->FillSolidRect(&rect,backColor);
pDC->SetBkColor(backColor);
return CreateSolidBrush(backColor);//创建背景刷子
}
这个时候如果发现groupbox还是不能正常显示,就像groupbox的Tab键顺序改成1。
6、关于菜单的透明图片制作
图片是BMP的32位RGBA格式的,普通图片是RGB格式,会显示有黑边,而不是透明的。可以用PS制作,在通道里主要A的颜色,黑色表示透明,灰色代表半透明,白色代表不透明
个人心得,水平有限,欢迎指正。
1、添加工具栏类别
CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITELARGE, IDB_WRITELARGE);
2、创建面板
CMFCRibbonPanel* pPanelADDUSER = pCategoryHome->AddPanel(L"XXX", m_PanelImages.ExtractIcon(7));
3、创建面板上的菜单
CMFCRibbonButton* pBtnADDUSER = new CMFCRibbonButton(ID_ADDUSER, strTemp,1, 1);
pPanelADDUSER->Add(pBtnADDUSER);
4、状态栏中添加时间
在MainFrm的oncreate()中添加以下
CTime time;
time=CTime::GetCurrentTime();//得到当前时间
CString s=time.Format("%H:%M:%S");//转换时间格式
CMFCRibbonBaseElement* m_StatusBarTime = new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE2, s, TRUE);
m_wndStatusBar.AddExtendedElement(m_StatusBarTime, L"时间栏");
SetTimer(1,1000,NULL);
设置一个定时器
在ontimer中添加
CTime time;
time=CTime::GetCurrentTime();//得到当前时间
CString s=time.Format("%H:%M:%S");//转换时间格式
m_StatusBarTime->SetText(s);
m_StatusBarTime->SetKeys(_T("p"));
m_StatusBarTime->SetToolTipText(_T("this is a pane"));
Invalidate();//这个刷新一定要加,不然时间不会自动刷新,这个也是bug
5、Formview中GroupBox的显示bug解决办法
GroupBox的Transparent属性不要设成透明;
重载OnCtlColor,添加代码:
CRect rect;
CWnd* pWndStatic=GetDlgItem(IDC_STATIC_GROUP);
if(pWnd->GetDlgCtrlID()==IDC_STATIC_GROUP && nCtlColor== CTLCOLOR_STATIC)
{
COLORREF backColor = RGB(236, 233, 216);//这个颜色为Formview默认的面板颜色
pWndStatic->GetClientRect(&rect);
pDC->FillSolidRect(&rect,backColor);
pDC->SetBkColor(backColor);
return CreateSolidBrush(backColor);//创建背景刷子
}
这个时候如果发现groupbox还是不能正常显示,就像groupbox的Tab键顺序改成1。
6、关于菜单的透明图片制作
图片是BMP的32位RGBA格式的,普通图片是RGB格式,会显示有黑边,而不是透明的。可以用PS制作,在通道里主要A的颜色,黑色表示透明,灰色代表半透明,白色代表不透明
个人心得,水平有限,欢迎指正。
相关文章推荐
- VC2008 Windows Media Player控件的使用技巧(三)
- VC2008 Windows Media Player控件的使用技巧
- VC6 使用 VC2005(2008) 编译器
- VC2008 Windows Media Player控件的使用技巧(三)
- 使用VC和MATCOM结合开发应用程序心得笔记
- vc2008 预处理器 使用EXE和DLL不同编译
- vs(2005 and 2008)中使用vc++创建智能设备项目失败的正确解决方案
- 使用VC2008编译sqlite
- windows下使用vc2008编译librtmp
- VC中CDockablePane使用心得
- C#中SQL SERVER 2008字符数据类型使用心得
- vc2008 中使用宏来添加注释的步骤
- 《数据结构》实验一:VC编程工具的灵活使用心得
- 使用SQL Server 2008的FILESTREAM特性管理文件(三)
- VC2008下编译使用OpenSSL
- Boost的编译及使用(以VC2008为例)
- vc2008构建和使用libcurl静态库
- VC2008使用SOAPSDK3.0 访问WebService
- WTL 8.0 在VC 2008 下使用问题
- vc++ 2008 如何使用quartz.dll 获取影片的帧