Immediate Mode GUI
void MyButtPushed();void OnInit()
{
m_SomeButton = new GuiButton( 10, 10, «Click Me» )
m_SomeButton->SetOnClick( MyButtPushed );
m_Desktop.AddChild( m_SomeButton );
}void OnRelease()
{
m_Desktop.RemoveChild( m_SomeButton );
delete m_SomeButton;
}void MyButtPushed()
{
GuiMessageBox( «It hurts.», BUTT_OK );
}
…ну и, кроме этого,
Это всё, до определённой меры, здорово, но немного напрягает общим количеством… даже не знаю, как точнее выразиться скажем, сугубо утилитарного кода. То есть, инициализации, освобождения, привязки событий, и всего такого. В общем, того, чего в идеальном мире быть не должно. В идеальном мире всё выглядит
void TheLoop()
{
if ( button( «Push Me», 10, 10 ) )
{
GuiMessageBox( «Ouch!», BUTT_OK );
}
}
Ну, а вот здесь подборка ссылок на IMGUI подход, который пытается быть немного ближе к вышеупомянутому идеальному миру.
Понятно, что такая концепция будет накладывать некоторые ограничения на возможности GUI (да и вообще вызывает ряд нехороших вопросов, в особенности в том, что касается реализации) но почитать, я думаю, будет всё равно интересно. Так, или иначе, а подход имеет право на жизнь как минимум в rapid prototyping и RAD.