We recommend using Visual Studio 2017



The latest version of this topic can be found at control.

Specifies that the user-defined type is a control.


The control attribute implies the coclass attribute. The control C++ attribute has the same functionality as the control MIDL attribute.

// cpp_attr_ref_control.cpp  
// compile with: /LD  
#include <windows.h>  
[module(name="Test", control=true)];  
[object, uuid("9e66a290-4365-11d2-a997-00c04fa37ddb")]  
__interface ICustom {  
   HRESULT Custom([in] long l, [out, retval] long *pLong);  
[coclass, control, appobject, uuid("9e66a294-4365-11d2-a997-00c04fa37ddb")]  
class CTest : public ICustom {};  

Attribute Context

Applies toclass, struct
Required attributesNone
Invalid attributesNone

For more information about the attribute contexts, see Attribute Contexts.

IDL Attributes
Class Attributes
Typedef, Enum, Union, and Struct Attributes
Attributes Samples