wx and Fortran
extern "C" {
void setab_(int *a, int *b);
}
#include "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( "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) {
int length, a, b;
char status[50];
wxMenu *menuFile = new wxMenu;
menuFile->Append(ID_About, "&About...");
menuFile->AppendSeparator();
menuFile->Append(ID_Quit, "E&xit");
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(menuFile, "&File");
SetMenuBar(menuBar);
CreateStatusBar();
setab_(&a,&b);
length=sprintf(status, "Welcome to wxWindows: a=%d, b=%d", a, b);
if (length<=50) {
SetStatusText(status);
}
else {
SetStatusText("Welcome to wxWindows: a and b not set due to string overflow");
}
}
void MyFrame::OnQuit(wxCommandEvent &WXUNUSED(event)) {
Close(TRUE);
}
void MyFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) {
wxMessageBox("This is a wxWindows Hello World sample",
"About Hello World", wxOK | wxICON_INFORMATION, this);
}
subroutine setab(a,b)
integer a, b
a=3;
b=5;
return
end