2017-07-14 90 views
0

我有我的MFC應用程序一個奇怪的問題,我與Visual Studio 2015年MFC應用程序不Visual Studio的

創建如果我運行通過本地Windows調試一切在Visual Studio中的應用程序工作按預期之外的顯示工具欄。

如果我在Visual Studio之外啓動生成的.exe文件,工具欄和狀態欄不會顯示在大型機中。我無法通過查看菜單激活它們。所以當我使用將文本寫入狀態欄的菜單點時,我的應用程序崩潰。

有人現在最新最新問題?

也許我不知道我應該在問題中顯示哪些代碼,請隨時在註釋中詢問特定的代碼部分。我將編輯問題並提供代碼。

這是創建工具欄和狀態欄的代碼。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 
     return -1; 

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

    m_wndToolBar.LoadTCToolBar(16, IDB_TOOLICONS, IDB_TOOLICONS_HOT, IDB_TOOLICONS_DISABLED, RGB(255, 0, 255)); 

    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)); 

    return 0; 
} 
+0

「我不知道我應該在問題中顯示哪些代碼」可複製錯誤並導致完整的可運行程序的最小可能代碼集。這通常被稱爲[mcve]或MCVE。 MCVE的美妙之處在於,一旦你創建了一個,這個bug在它可以隱藏的空間很小,並且經常允許你刪除或自己回答這個問題,因爲MCVE可以清楚地解決問題的原因。 – user4581301

+0

您可以顯示代碼,在主框架中創建狀態和工具欄的位置? –

+0

我已經創建了一個像問題一樣的新MFC程序。在新創建的MFC程序中,所描述的錯誤沒有發生。 – Kevin

回答

0

我已經解決了在OnCreate方法中使用簡單代碼重新排列的問題。

的方法現在看起來是這樣的:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 


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

    m_wndToolBar.LoadTCToolBar(16, IDB_TOOLICONS, IDB_TOOLICONS_HOT, IDB_TOOLICONS_DISABLED, RGB(255, 0, 255)); 

    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)); 

    if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 
     return -1; 

    return 0; 
} 

我不得不線

if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 
      return -1; 

移動到方法的結束。之後,酒吧顯示。

相關問題