2013-08-07 77 views
0

我不知道這傢伙創造了上節目此工具欄:
enter image description here
這是由人創造一個無模式對話框,我想:enter image description here
但我對話框是模態的。我不認爲這會帶來很多改變!
這是他寫的使用在res文件夾提供的工具欄的代碼:如何創建工具欄的MFC基於對話框的應用

爲MainFrm.h

protected: // control bar embedded members 
CMFCMenuBar  m_wndMenuBar; 
CMFCToolBar  m_wndToolBar; 
CMFCStatusBar  m_wndStatusBar; 
CMFCToolBarImages m_UserImages; 

MainFrm.cpp中 在功能上添加的代碼:CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)初始化資源中提供的工具欄:

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
    !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 :  IDR_MAINFRAME)) 
{ 
    TRACE0("Failed to create toolbar\n"); 
    return -1;  // fail to create 
} 

CString strToolBarName; 
bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD); 
ASSERT(bNameValid); 
m_wndToolBar.SetWindowText(strToolBarName); 

CString strCustomize; 
bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); 
ASSERT(bNameValid); 
m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); 

// Allow user-defined toolbars operations: 
InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId); 

if (!m_wndStatusBar.Create(this)) 
{ 
    TRACE0("Failed to create status bar\n"); 
    return -1;  // fail to create 
} 
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); 

// TODO: Delete these five lines if you don't want the toolbar and menubar to be dockable 
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY); 
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
EnableDocking(CBRS_ALIGN_ANY); 
DockPane(&m_wndMenuBar); 
DockPane(&m_wndToolBar); 


// enable Visual Studio 2005 style docking window behavior 
CDockingManager::SetDockingMode(DT_SMART); 
// enable Visual Studio 2005 style docking window auto-hide behavior 
EnableAutoHidePanes(CBRS_ALIGN_ANY); 

// Enable toolbar and docking window menu replacement 
EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR); 

// enable quick (Alt+drag) toolbar customization 
CMFCToolBar::EnableQuickCustomization(); 

if (CMFCToolBar::GetUserImages() == NULL) 
{ 
    // load user-defined toolbar images 
    if (m_UserImages.Load(_T(".\\UserImages.bmp"))) 
    { 
     CMFCToolBar::SetUserImages(&m_UserImages); 
    } 

} 

// enable menu personalization (most-recently used commands) 
// TODO: define your own basic commands, ensuring that each pulldown menu has at least one basic command. 
CList<UINT, UINT> lstBasicCommands; 

lstBasicCommands.AddTail(ID_FILE_NEW); 
lstBasicCommands.AddTail(ID_FILE_OPEN); 
lstBasicCommands.AddTail(ID_FILE_SAVE); 
lstBasicCommands.AddTail(ID_FILE_PRINT); 
lstBasicCommands.AddTail(ID_APP_EXIT); 
lstBasicCommands.AddTail(ID_EDIT_CUT); 
lstBasicCommands.AddTail(ID_EDIT_PASTE); 
lstBasicCommands.AddTail(ID_EDIT_UNDO); 
lstBasicCommands.AddTail(ID_APP_ABOUT); 
lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR); 
lstBasicCommands.AddTail(ID_VIEW_TOOLBAR); 

CMFCToolBar::SetBasicCommands(lstBasicCommands); 

**事實上,我不明白,並已浪費了我的時間兩天,讓我張貼four questions in this site在於製造一種新的工具欄供這裏經過:
enter image description here
enter image description here
並導致工具欄編輯
1 - 如何創建已經提供了工具欄上的新工具欄按鈕?
2-如何將此按鈕的形狀更改爲標準24位深度圖像或所需圖標?
enter image description here
最後,我想在我的res文件夾中爲我的工具欄中顯示一個這樣的圖像,當然我希望按鈕在我的程序窗口中單獨點擊。
enter image description here
如果有必要將項目的源,I have uploaded the guy's project here

回答

0

我認爲它只是讀取適當證件的問題,創建新的工具欄按鈕:查看MSDN Creating a New Toolbar ButtonToolbar Editor

更改工具欄中按鈕的圖像深度:在位圖編輯器(如Paint)中加載與工具欄相關聯的bmp文件(在Res文件夾中),保存爲具有不同圖像深度的bmp,​​加載在VS中sln並重建項目。

+0

謝謝@Edward Clements我還沒有看到這些鏈接瞭解 – sepideh

0

該程序與mainframe.cpp不是一個無模式對話框,它是一個MFC文檔/視圖程序,旨在支持菜單欄和工具欄。

基於對話框的程序沒有設計的工具欄支持。MFC示例程序DLGCBR32(在MSDN中)顯示瞭如何在對話框中放置工具欄。

相關問題