2009-06-05 4 views
1

У меня есть этот WxWidgets источник тестового кода, который компилирует, и при запуске он показывает простой кадр:Cant фокус WxWidgets кадра в Mac OSX, скомпилированный с SCons

/* 
* hworld.cpp 
* Hello world sample by Robert Roebling 
*/ 

#include "wx-2.8/wx/wx.h" 

class MyApp: public wxApp 
{ 
    virtual bool OnInit(); 
}; 

class MyFrame: public wxFrame 
{ 
public: 

    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); 

    void OnQuit(wxCommandEvent& event); 
    void OnAbout(wxCommandEvent& event); 

    DECLARE_EVENT_TABLE() 
}; 

enum 
{ 
    ID_Quit = 1, 
    ID_About, 
}; 

BEGIN_EVENT_TABLE(MyFrame, wxFrame) 
    EVT_MENU(ID_Quit, MyFrame::OnQuit) 
    EVT_MENU(ID_About, MyFrame::OnAbout) 
END_EVENT_TABLE() 

IMPLEMENT_APP(MyApp) 

bool MyApp::OnInit() 
{ 
    MyFrame *frame = new MyFrame(_T("Hello World"), wxPoint(50,50), wxSize(450,340)); 
    frame->Show(TRUE); 
    SetTopWindow(frame); 
    return TRUE; 
} 

MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) 
: wxFrame((wxFrame *)NULL, -1, title, pos, size) 
{ 
    wxMenu *menuFile = new wxMenu; 

    menuFile->Append(ID_About, _T("&About...")); 
    menuFile->AppendSeparator(); 
    menuFile->Append(ID_Quit, _T("E&xit")); 

    wxMenuBar *menuBar = new wxMenuBar; 
    menuBar->Append(menuFile, _T("&File")); 

    SetMenuBar(menuBar); 

    CreateStatusBar(); 
    SetStatusText(_T("Welcome to wxWindows!")); 
} 

void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) 
{ 
    Close(TRUE); 
} 

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) 
{ 
    wxMessageBox(_T("This is a wxWindows Hello world sample"), 
     _T("About Hello World"), wxOK | wxICON_INFORMATION, this); 
} 

Создано с помощью этого простого Scons сценария:

env = Environment() 
env.ParseConfig('wx-config --cxxflags --libs') 

env.Program(target='wxTest/wxTest.exe',source=['src/Wxwidgets.cpp']) 

Проблема: он не будет сфокусирован, когда я запустил его. Единственное, что я могу сфокусировать, это красные, желтые и зеленые кнопки в верхнем левом углу. Я использую Eclipse в качестве моей IDE и запускаю scons как внешний инструмент, когда я его создаю.

Есть ли кто-то, кто знает, что я делаю неправильно? Как я могу заставить фрейм сфокусироваться?

Надеюсь, что кто-то может помочь мне.

+0

Обратите внимание, что вы также должны удалить перечисление id и использовать предопределенные идентификаторы wxID_EXIT и wxID_ABOUT, которые специально обрабатываются в wxMac, поскольку элементы меню для этих команд будут перемещены в соответствующее место на платформе в меню приложения , См. Http://wiki.wxwidgets.org/WxMac_Issues для получения дополнительной информации. – mghie

ответ

4

Предполагается, что вы запускаете исполняемый файл raw, который создан? Это не работает в Mac OS X, см. My app can't be brought to the front!

Вам нужно будет создать пакет приложений для работы вашего приложения в Mac OS X. Я ничего не знаю о SCons, но, может быть, помогает wiki?

+0

Aaah Я не знал, что мне нужен комплект. Может быть, мне просто нужно погрузиться в то, как это сделать для моей программы :) спасибо за ссылку !! – mslot