Невозможно сфокусировать фрейм WxWidgets в Mac OSX, скомпилированный с помощью SCons

У меня есть этот тестовый исходный код WxWidgets, который компилируется, и при запуске он показывает простой фрейм:

/*
 * 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 как внешний инструмент при его создании.

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

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


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


Ответы (1)


Я полагаю, вы запускаете созданный необработанный исполняемый файл? Это не работает в Mac OS X, см. Мое приложение нельзя вывести на передний план!

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

person mghie    schedule 05.06.2009
comment
Ааа, я не знал, что мне нужен узелок. Может быть, мне просто нужно погрузиться в то, как это сделать для моей программы :) Спасибо за ссылку !! - person mslot; 05.06.2009