2016-11-02 1 views
1

내 메인 프레임 창에 두 번째 툴바를 추가하여 기존 툴바에 추가하고 싶습니다.두 번째 툴바를 메인 프레임에 추가하는 방법은 무엇입니까?

읽고 다음 자습서 : 이것은 내 코드입니다
https://stackoverflow.com/questions/35736580/how-to-add-a-second-toolbar-to-an-mfc-application-so-that-the-toolbar-is-added-o

:이 답이 스레드에 비슷한 결론에 도달 한
http://forums.codeguru.com/showthread.php?495887-Add-a-toolbar-to-an-MFC-application

http://www.codersource.net/2010/01/30/mfc-tutorial-toolbars/

MFC Toolbar on Dialog?

:

012 3,516,
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 
     return -1; 
    // create a view to occupy the client area of the frame 
    if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, 
     CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) 
    { 
     TRACE0("Failed to create view window\n"); 
     return -1; 
    } 
    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(IDR_MAINFRAME)) 
{ 
    TRACE0("Failed to create toolbar\n"); 
    return -1;  // fail to create 
} 
if (!m_wndStatusBar.Create(this) || 
    !m_wndStatusBar.SetIndicators(indicators, 
     sizeof(indicators)/sizeof(UINT))) 
{ 
    TRACE0("Failed to create status bar\n"); 
    return -1;  // fail to create 
} 

m_wndStatusBar.SetPaneInfo(EWF_PANE_INDEX, ID_SEPARATOR, SBPS_NORMAL, EWF_PANE_WIDTH); 

for (int i=0;i<5; i++) { 
    // Change Status Bar style to make it Owner-drawn 
    m_wndStatusBar.GetStatusBarCtrl().SetText("", i, SBT_OWNERDRAW); 
} 

CToolBar myToolBar; 

if (!myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
    !myToolBar.LoadToolBar(IDR_MAINFRAME_B)) 
{ 
    TRACE0("Failed to create toolbar\n"); 
    return -1; // fail to create 
} 


return 0; 
} 

는 내가 추가 한 : 내 두 번째 도구 모음의 맨 아래에

CToolBar myToolBar; 

if (!myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
    !myToolBar.LoadToolBar(IDR_MAINFRAME_B)) 
{ 
    TRACE0("Failed to create toolbar\n"); 
    return -1; // fail to create 
} 

하지만 앱을 열 때 표시되지 않으며 오류없이 컴파일합니다. I 앱이 모두 함께로드되지 않습니다 다음 줄에 내 두 번째 도구 모음이 pFrame->LoadFrame를 호출 할 경우 pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE , NULL, NULL);
에 의해 InitInstance()에서 호출 이미 제공된 도구 모음에 비교
.
두 번째 툴바를 어떻게 호출해야합니까?
완전히 다른 것을 놓친 적이 있습니까?

+2

CToolBar myToolBar를 m_wndToolBar와 같은 방식으로 CMainFrame 클래스의 멤버 변수로 추가하려고합니다. – VuVirt

+0

@VuVirt 일하는 최고 사람 ... 내가 회원 변수를 만드는 것과 비교했을 때 CToolBar myToolBar를 사용하는 것의 차이점은 무엇입니까? 또한 그 질문에 답을 줄 수 있도록 적절한 대답을하고 싶습니까? – StevoStephenson

답변

1

CToolBar myToolBar를 m_wndToolBar와 같은 방식으로 CMainFrame 클래스의 멤버 변수로 추가해야합니다. 그렇지 않으면 OnCreate가 종료 된 후 로컬 변수로 정의하면 파손됩니다.

관련 문제