VST 3 Interfaces: IComponentHandler2 Class Reference
Author: Steinberg

VST 3 Interfaces VST 3.7 SDK for developing VST plug-in

- Main Page
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups Pages
Public Member Functions | Static Public Attributes | List of all members
IComponentHandler2 Class Referenceabstract

Extended host callback interface for an edit controller: Vst::IComponentHandler2. More...

`#include <ivsteditcontroller.h>`

Inheritance diagram for IComponentHandler2:

## Public Member Functions
virtual tresult | setDirty (TBool state)=0
    Tells host that the plug-in is dirty (something besides parameters has changed since last save),
if true the host should apply a save before quitting.
virtual tresult | requestOpenEditor (FIDString name=ViewType::kEditor)=0
| Tells host that it should open the plug-in editor the next time it's possible.
virtual tresult | startGroupEdit ()=0
    Starts the group editing (call before a \ref IComponentHandler::beginEdit),
the host will keep the current timestamp at this call and will use it for all IComponentHandler::beginEdit / IComponentHandler::performEdit / IComponentHandler::endEdit calls until a finishGroupEdit ().
virtual tresult | finishGroupEdit ()=0
| Finishes the group editing started by a startGroupEdit (call after a IComponentHandler::endEdit).
Public Member Functions inherited from FUnknown
virtual tresult | queryInterface (const TUID _iid, void **obj)=0
virtual uint32 | addRef ()=0
virtual uint32 | release ()=0

## Static Public Attributes
static const FUID | iid
Static Public Attributes inherited from FUnknown
static const FUID | iid

## Detailed Description

Extended host callback interface for an edit controller: Vst::IComponentHandler2.

- [host imp]
- [extends IComponentHandler]
- [released: 3.1.0]
- [optional]

One part handles:

- Setting dirty state of the plug-in
- Requesting the host to open the editor

The other part handles parameter group editing from the plug-in UI. It wraps a set of IComponentHandler::beginEdit / Steinberg::Vst::IComponentHandler::performEdit / Steinberg::Vst::IComponentHandler::endEdit functions (see IComponentHandler) which should use the same timestamp in the host when writing automation. This allows for better synchronizing of multiple parameter changes at once.

# Examples of different use cases

//--------------------------------------
// we are in the editcontroller...
// in case of multiple switch buttons (with associated ParamID 1 and 3)
// on mouse down :
hostHandler2->startGroupEdit ();
hostHandler->beginEdit (1);
hostHandler->beginEdit (3);
hostHandler->performEdit (1, 1.0);
hostHandler->performEdit (3, 0.0); // the opposite of paramID 1 for example
....
// on mouse up :
hostHandler->endEdit (1);
hostHandler->endEdit (3);
hostHandler2->finishGroupEdit ();
....
....
//--------------------------------------
// in case of multiple faders (with associated ParamID 1 and 3)
// on mouse down :
hostHandler2->startGroupEdit ();
hostHandler->beginEdit (1);
hostHandler->beginEdit (3);
hostHandler2->finishGroupEdit ();
....
// on mouse move :
hostHandler2->startGroupEdit ();
hostHandler->performEdit (1, x); // x the wanted value
hostHandler->performEdit (3, x);
hostHandler2->finishGroupEdit ();
....
// on mouse up :
hostHandler2->startGroupEdit ();
hostHandler->endEdit (1);
hostHandler->endEdit (3);
hostHandler2->finishGroupEdit ();

See Also
  IComponentHandler, IEditController

## Member Function Documentation

virtual tresult setDirty | ( | TBool | state | ) |
| pure virtual

    Tells host that the plug-in is dirty (something besides parameters has changed since last save),

if true the host should apply a save before quitting.

virtual tresult requestOpenEditor | ( | FIDString | name = `ViewType::kEditor` | ) |
| pure virtual

Tells host that it should open the plug-in editor the next time it's possible.

You should use this instead of showing an alert and blocking the program flow (especially on loading projects).

virtual tresult startGroupEdit | ( |  | ) |
| pure virtual

    Starts the group editing (call before a \ref IComponentHandler::beginEdit),

the host will keep the current timestamp at this call and will use it for all IComponentHandler::beginEdit / IComponentHandler::performEdit / IComponentHandler::endEdit calls until a finishGroupEdit ().

virtual tresult finishGroupEdit | ( |  | ) |
| pure virtual

Finishes the group editing started by a startGroupEdit (call after a IComponentHandler::endEdit).

## Member Data Documentation

const FUID iid
| static

Empty

Copyright ©2024 Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.