VSTGUI:Slider

本次给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的界面完成。

你可能感兴趣的:(C/C++笔记,音频,编程笔记)