class MainWindow : public WithMainWindowLayout<TopWindow>, public CallbackQueue, public Reader::Notify, public Writer::Notify, public RpcCmder::Notify { public: //thread GUI MainWindow(int nPort); public: //thread Worker virtual void OnReplyRead(int nData, int x2, String s) {Request(&MainWindow::SaveReadResult,nData,x2,s);} virtual void OnReplyWrite(int nData, int x2, String s) {Request(&MainWindow::SaveWriteResult,nData,x2,s);} virtual void OnReplyRpcCmd(int nData, int x2, String s) {Request(&MainWindow::SaveRpcCmdResult,nData,x2,s);} private: void ReadSensors() {reader.Request(&Reader::ReadSensors);} void WriteCtrl(int nData) {writer.Request(&Writer::WriteCtrl, nData);} void RpcCmd(UrrRequest r) {rpcCmder.Request(&RpcCmder::RpcCmd, r);} void SaveReadResult(int nData, int x2, String s); void SaveWriteResult(int nData, int x2, String s); void SaveRpcCmdResult(int nData, int x2, String s); void SpawnTasks(); void AddDataToAlgoQueue(String strTimeStamp, int nData); void AddDataToLoggerQueue(String strTimeStamp, int nData); void DoTasksAndStatistics(); }
class MainWindow : public WithMainWindowLayout<ParentCtrl>, public CallbackQueue, public Reader::Notify, public Writer::Notify, public RpcCmder::Notify
TabDlg dlg; MainWindow tab[5]; for(int i = 0; i < 5; i++) dlg(tab[i], String("Tab")<<i); dlg .OKCancel() .Title("Tab dialog"); dlg.Run();
you can replace TopWindow with ParentCtrl,
class MainWindow : public WithMainWindowLayout<ParentCtrl>, public CallbackQueue, public Reader::Notify, public Writer::Notify, public RpcCmder::Notify
then
TabDlg dlg; MainWindow tab[5]; for(int i = 0; i < 5; i++) dlg(tab[i], String("Tab")<<i); dlg .OKCancel() .Title("Tab dialog"); dlg.Run();
Hi folks,
I have developed a dialog-based application which works ok.
Now I want to extend the program into multiple instances under a TabCtrl. Basically, I need to downgrade the <TopWindow> main window to some low level one, such that it can be added to a TabCtrl.
How I can do that? I searched "TabCtrl" in the code coming from the installation package. The 2x examples are both having different layout for the tabbed window. My case is much simpler. I want to chain multiple instance of a window layout to TabCtrl. But I don't know what I should do to achieve this.
The code of my current dialog program is the following:
class MainWindow : public WithMainWindowLayout<TopWindow>, public CallbackQueue, public Reader::Notify, public Writer::Notify, public RpcCmder::Notify { public: //thread GUI MainWindow(int nPort); public: //thread Worker virtual void OnReplyRead(int nData, int x2, String s) {Request(&MainWindow::SaveReadResult,nData,x2,s);} virtual void OnReplyWrite(int nData, int x2, String s) {Request(&MainWindow::SaveWriteResult,nData,x2,s);} virtual void OnReplyRpcCmd(int nData, int x2, String s) {Request(&MainWindow::SaveRpcCmdResult,nData,x2,s);} private: void ReadSensors() {reader.Request(&Reader::ReadSensors);} void WriteCtrl(int nData) {writer.Request(&Writer::WriteCtrl, nData);} void RpcCmd(UrrRequest r) {rpcCmder.Request(&RpcCmder::RpcCmd, r);} void SaveReadResult(int nData, int x2, String s); void SaveWriteResult(int nData, int x2, String s); void SaveRpcCmdResult(int nData, int x2, String s); void SpawnTasks(); void AddDataToAlgoQueue(String strTimeStamp, int nData); void AddDataToLoggerQueue(String strTimeStamp, int nData); void DoTasksAndStatistics(); }
Thank you very much!
Best Regards
David