Мне необходимо добавить новый элемент в фрейм (Composite) Причем сделать это после того как этот фрейм уже создан
В данном примере при нажатии кнопки вызывается команда onCmdButtonPressed которая вставляет новую кнопку , но она не прорисовывается !!! что надо сделать ??
#include<iostream> #include "fx.h" class MyWindow : public FXMainWindow { FXDECLARE(MyWindow) MyWindow() {}; public: MyWindow(FXApp *); long onCmdButtonPressed(FXObject * obj ,FXSelector sel ,void* ptr); virtual void create(); virtual ~MyWindow(){} enum { ID_BUTTON=FXMainWindow::ID_LAST };
FXVerticalFrame* frame_; };
/////////////// Event MAP FXDEFMAP(MyWindow) MyWindowMap[]={ FXMAPFUNC(SEL_COMMAND, MyWindow::ID_BUTTON, MyWindow::onCmdButtonPressed), };
FXIMPLEMENT(MyWindow,FXMainWindow,MyWindowMap,ARRAYNUMBER(MyWindowMap)) MyWindow::MyWindow(FXApp * a) :FXMainWindow(a,"Window",NULL,NULL,DECOR_ALL,0,0,800,600) { frame_=new FXVerticalFrame(this,LAYOUT_FILL_X|LAYOUT_FILL_Y); new FXButton(frame_,"&Test Button",NULL,this,MyWindow::ID_BUTTON); new FXButton(frame_,"&Test Button",NULL,this,MyWindow::ID_BUTTON);
}
void MyWindow::create(){ FXMainWindow::create(); show(PLACEMENT_SCREEN); }
long MyWindow::onCmdButtonPressed(FXObject * obj ,FXSelector sel ,void* ptr) {
FXButton* b=new FXButton(frame_,"&Test Button",NULL,this,MyWindow::ID_BUTTON); std::cout<<"new Button addr="<<static_cast<void*> (b)<<std::endl; //////////////////////////////////////////// // кнопка создана но она не рисуется /////////////////////////////////////////// return 1; } int main(int argc,char ** argv) { FXApp application("Tutorial #1","FOX Tutorials");
application.init(argc,argv);
new MyWindow(&application);
application.create();
return application.run(); } //////////////////////////////////////////////////////////////////// //// под линукс компилить g++ -o test mywindow.cc -I/usr/include/fox-1.2 -L/usr/X11R6/lib -lFOX-1.2 -lX11 -lXext -lm