2012-12-26 52 views
0

我在嘗試學習WXWidgets時遇到了一些麻煩。我目前正在嘗試使用文件對話框,並且我有一個開放就好了。但是,每當我嘗試將樣式應用到窗口時,我都會遇到麻煩。我使用任何風格都會得到一個未聲明的標識符。WxWidgets文件對話框問題

我的代碼如下(是的,我知道,你好世界應用程序。我跟所有我需要學習實際進行完全成熟的應用程序之前做的事情試驗)

#include "wx/wx.h" 
    #include "wx/filedlg.h" 

    #include "HelloWorldApp.h" 

    IMPLEMENT_APP(HelloWorldApp) 

    bool HelloWorldApp::OnInit() 
    { 
     wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World")); 


     wxFileDialog* OpenDialog = new wxFileDialog(frame, _("Choose a file to open"), wxEmptyString, wxEmptyString, 
      _("Image Files (*.jpg, *.png, *.gif, *.bmp)|*.jpg;*.png;*.gif;*.bmp|Sound Files (*.wav, *.mp3)|*.wav;*.mp3"), 
wxFD_MULTIPLE); 

     frame->CenterOnScreen(); 
     frame->Show(true); 

     OpenDialog->ShowModal(); 

     SetTopWindow(frame); 
     return true; 
    } 

它運行沒有「wxFD_MULTIPLE」參數就沒問題。我正在使用wxWidgets的2.8.12版本。

感謝您的閱讀。我非常感謝任何人的幫助或指導。對不起,如果這是真的很明顯,我錯過了。

+0

您可以粘貼生成日誌嗎? –

回答

0

在很老的wxWidgets版本(2.6)中,這種風格被稱爲wxMULTIPLE,但在任何2.8.x版本中都可以使用wxFD_MULTIPLE。你應該給出(開始)你得到的錯誤,讓我們瞭解到底發生了什麼。

完全獨立,您的代碼是錯誤的,因爲它包含內存泄漏:對話框必須銷燬,因爲模式對話框是常規規則的例外,所有窗口應該分配在堆上,並且可以分配到堆棧上用作簡單的局部變量,請參見the example in the documentation。查看「對話框」示例代碼也強烈建議。

+0

好的。有問題的錯誤是 錯誤C2065:'wxFD_MULTIPLE':未聲明的標識符 但是,我試過你的2.6版本。奇怪的是,它的工作原理。 O.o我不知道爲什麼它使用舊代碼(我下載了2.8.12版本,並且該文件夾顯示它是)。所以我不得不努力嘗試讓它編譯正確的代碼。謝謝您的幫助。如果沒有你的幫助,我不知道自己在某種程度上使用了舊版本。 – Legacyblade

+0

我認爲你的包含路徑必須有問題,並且當你認爲你使用2.8包頭和/或反之亦然時,你會使用2.6包頭。 –