本次给VST增加了Slider控件,主要是重载AEffGUIEditor类及其open,close函数。
1. ctor
使用BMP图片,new一个CBitmap。
给AEffGUIEditor::rect初始化。
AEffGuiComp::AEffGuiComp(AudioEffect * effect)
:AEffGUIEditor(effect)
{
m_pbmp_back = new CBitmap(IDB_BACK);
rect.left = 0;
rect.top = 0;
rect.right = (VstInt16)m_pbmp_back->getWidth();
rect.bottom = (VstInt16)m_pbmp_back->getHeight();
}
2. dtor
CBitmap指针调用forget释放资源。
AEffGuiComp::~AEffGuiComp()
{
if (m_pbmp_back != nullptr)
{
m_pbmp_back->forget();
m_pbmp_back = nullptr;
}
}
3. open
new一个CFrame;
new一个CView,通过调用addView放到frame里。
new一个CVerticalSlider,放到frame里。最后把除了背景以外的bmp forget()掉。
4. CVerticalSlider
一个CVerticalSlider需要两张图片,thumb和background。background即决定了Slider的大小。
构造CVerticalSlider时建议MinPos给rectBmpBackground.top,MaxPos给rectBmpBackground.bottom - rectBmpThumb.Height。offset设成(0, rectBmpThumb.Height)。
m_p_sld_ratio =
new CVerticalSlider(
rc_slider_size,
0, // this,
0, // PARA_RATIO,
rc_slider_size.top, rc_slider_size.bottom - 40,
pbmp_thumb, pbmp_sld_back,
CPoint(0,40),kTop);
最基本的带Slider的界面完成。