CXTPReBar和 CXTButton 的问题
我有一个程序,在 CMainFrame 的 OnCreate 中建立了两个工具栏 和一个按钮,并且用了office2003的风格。但是用 了CXTPReBar后
菜单栏和工具栏的的边框变灰,在office2003的风格上变了。但是在没有加CXTPReBar之前就是office2003的风格。还有CXTButton上面没有把bitmap显示出来 这是问什么,有什么办法可以解决呢?以下是 Oncreate 里面的代码:
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//CXTPPaintManager::SetTheme(xtpThemeOffice2003);
// m_CloseButton.GetWnd(this);
if (!InitCommandBars())
return -1;
CXTPCommandBars* pCommandBars = GetCommandBars();
CXTPMenuBar* pMenuBar=pCommandBars->SetMenu(_T("Menu Bar"), IDR_MENU_MAIN);
CXTPToolBar* pStandardBar = (CXTPToolBar*)pCommandBars->Add(_T("1"), xtpBarTop);
if (!pStandardBar ||
!pStandardBar->LoadToolBar(IDR_TOOLBAR_NAVI_ROUTE))
{
TRACE0("Failed to create toolbar\n");
}
CXTPToolBar* pExpandBar = (CXTPToolBar*)pCommandBars->Add(_T("2"), xtpBarTop);
if (!pExpandBar ||
!pExpandBar->LoadToolBar(IDR_TOOLBAR_TASK_MANAGE))
{
TRACE0("Failed to create toolbar\n");
}
DockRightOf(pStandardBar,pExpandBar);
UINT toolBars[]={
ID_NEW_TASK,
ID_OPEN_TASK,
ID_SAVE_TASK,
ID_SAVE_AS_TASK,
ID_SEARCH_POI_DATA,
ID_SEARCH_NEAR_BY,
ID_POINT_MANAGE,
ID_PERSON_LIST,
ID_DATA_TYPE_SELECT,
ID_PERSON_MANAGE,
ID_SEND_OBJECT_SELECT,
ID_SEND_TASK
};
pExpandBar->GetImageManager()->SetIcons(IDB_BITMAP_TOOLBAR,
toolBars,12,CSize(16,15));
pExpandBar->GetImageManager()->SetIcons(IDB_BITMAP_TOOLBAR_GRAY,
toolBars,12,CSize(16,15),xtpImageDisabled);
UINT mapBars[]={
ID_NEW_TASK,
ID_OPEN_TASK,
ID_SAVE_TASK,
ID_SAVE_AS_TASK,
ID_SEARCH_POI_DATA,
ID_SEARCH_NEAR_BY,
ID_POINT_MANAGE,
ID_PERSON_LIST,
ID_DATA_TYPE_SELECT,
ID_PERSON_MANAGE,
ID_SEND_OBJECT_SELECT,
ID_SEND_TASK,
ID_SET_START_POINT,
ID_SET_END_POINT,
ID_DELETE_POINT,
ID_REMOVE_ALL_POINT,
ID_MAP_EDIT_POINT,
ID_MAP_COMPUTE_ROUTE,
ID_MAP_ZOOM_IN,
ID_MAP_ZOOM_OUT,
ID_MAP_MOVE_MAP,
ID_MAP_ROUTE_RULE
};
pStandardBar->GetImageManager()->SetIcons(IDB_BITMAP_TOOLBAR,
mapBars,22,CSize(16,15));
pStandardBar->GetImageManager()->SetIcons(IDB_BITMAP_TOOLBAR_GRAY,
mapBars,21,CSize(16,15),xtpImageDisabled);
RECT rect;
rect.bottom=10;
rect.left=10;
rect.right=10;
rect.top=10;
//////////////////////////////////////////////////////////////////////////
int cx = GetSystemMetrics(SM_CXSMICON);
int cy = GetSystemMetrics(SM_CYSMICON);
CRect rtTitle,rtButtons;
m_CloseButton.SetTheme( new CXTButtonThemeOffice2003(TRUE));
m_CloseButton.Create("",WS_VISIBLE | WS_CHILD | BS_AUTO3STATE|BS_PUSHBUTTON|BS_OWNERDRAW,
CRect(0, 0, cx,cy),this,ID_BUTTON_CLOSE_FILE);
m_CloseButton.SetButtonStyle(BS_XT_HILITEPRESSED);
m_CloseButton.SetXButtonStyle(BS_XT_XPFLAT | BS_XT_SHOWFOCUS);
CBitmap bitmap;
VERIFY(bitmap.LoadBitmap(IDB_BITMAP2));
HBITMAP hBitmap = (HBITMAP) bitmap.GetSafeHandle();
m_CloseButton.SetBitmap(CSize(16,16),IDB_BITMAP2,TRUE);
if (!m_wndReBar.Create(this) ||
!m_wndReBar.AddToolBar(pMenuBar) ||
!m_wndReBar.AddToolBar(pStandardBar, RBBS_GRIPPERALWAYS | RBBS_BREAK)||
!m_wndReBar.AddToolBar(pExpandBar, RBBS_GRIPPERALWAYS )
||!m_wndReBar.AddBar(&m_CloseButton, 0, 0, RBBS_NOGRIPPER | RBBS_FIXEDBMP | RBBS_FIXEDSIZE)
)
{
TRACE0("Failed to create rebar\n");
return -1; // fail to create
}
CXTPPaintManager::SetTheme(xtpThemeOffice2003);
LoadCommandBars(_T("CommandBars"));