Как встроить окно из HDevEngine в мою панель wxWidgets?C++

Программы на C++. Форум разработчиков
Anonymous
Как встроить окно из HDevEngine в мою панель wxWidgets?

Сообщение Anonymous »

HDevEngine (патентованное программное обеспечение) — это интерпретатор для запуска программ с языка сценариев на C++. Этот движок также может запускать всплывающие окна для отображения результатов.
Я хочу, чтобы HDevEngine не создавал новое окно. Вместо этого я хочу встроить окно в существующую панель моего фрейма wxWidgets.
Я сейчас не знаю, как начать, просто сделал это:
#include
#include "HalconCpp.h"
#include "HDevEngineCpp.h"
#include "HDevThread.h"
#include "my_error_output.h"
#include "my_hdevoperatorimpl.h"

using namespace HalconCpp;
using namespace HDevEngine;

// Definiere eine Klasse, die von wxFrame erbt
class MyFrame : public wxFrame
{
public:
MyFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 600))
{
// Erstelle ein horizontales BoxSizer
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);

// Erstelle zwei Panels und füge sie dem Sizer hinzu
wxPanel* panel1 = new wxPanel(this, wxID_ANY);
wxPanel* panel2 = new wxPanel(this, wxID_ANY);

sizer->Add(panel1, 1, wxEXPAND | wxALL, 5);
sizer->Add(panel2, 1, wxEXPAND | wxALL, 5);

// Setze den Sizer für das Frame
this->SetSizer(sizer);

HDevEngine my_engine;
MyHDevOperatorImpl op_impl;
my_engine.SetHDevOperatorImpl(&op_impl);
std::string program_path = Data::get().getAppData().PathHdev;
// Load program
HDevProgram my_program;
my_program.LoadProgram(program_path.c_str());

// Erstelle ein HALCON-Fenster im ersten Panel
Htuple windowID;
OpenWindow(0, 0, panel1->GetSize().GetWidth(), panel1->GetSize().GetHeight(), (Hlong)panel1->GetHandle(), "visible", "", &windowID);
HDevWindowStack::Push(windowID);

// Führe das HDevelop-Programm aus
hDevProgram.Execute();

// Passe das Layout an
this->Layout();
}

~MyFrame() {
// Schließe das HALCON-Fenster beim Zerstören des Frames
if (HDevWindowStack::IsOpen())
{
CloseWindow(HDevWindowStack::Pop());
}
}
};

// Definiere eine Klasse, die von wxApp erbt
class MyApp : public wxApp
{
public:
virtual bool OnInit()
{
// Erstelle eine Instanz des Frames und zeige sie an
MyFrame *frame = new MyFrame("Mein Fenster in wxWidgets mit zwei Panels");
frame->Show(true);
return true;
}
};

// Implementiere das Hauptmakro
wxIMPLEMENT_APP(MyApp);


Подробнее здесь: https://stackoverflow.com/questions/787 ... gets-panel

Вернуться в «C++»