IID_IPropertyControl {5E82A4DD-9561-476A-8634-1BEBACBA4A38}

The IPropertyControl methods are (as ordered in the virtual function table after the IPropertyControlBase methods):

Offset Method
0x40 GetValue
0x44 Create
0x48 SetPosition
0x4C IsModified
0x50 SetModified
0x54 ValidationFailed
0x58 GetState

with prototypes:

HRESULT Create (HWND, RECT const *, RECT const *, INT);
HRESULT SetPosition (RECT const *, RECT const *);
HRESULT IsModified (BOOL *);
HRESULT SetModified (BOOL);
HRESULT ValidationFailed (PCWSTR);
HRESULT GetState (INT *);


The only known implementations of the IPropertyControl interface are by SHELL32.

One known purpose of the IPropertyControl interface is to provide a set of callback functions for a List-View control. The interface is implemented by any component that has access to a List-View control and wants to participate in the handling of subitems. To register this set of callback functions for a subitem, first provide the List-View control with an ISubItemCallback interface, by giving it as the argument to the SetSubItemCallback method of the List-View control’s IListView interface. When a subitem is to be edited, COMCTL32 calls the ISubItemCallback interface’s BeginSubItemEdit or BeginGroupEdit methods, asking for an IPropertyControl interface for the subitem.


The IPropertyControl interface is supported by SHELL32 version 6.00, in the build for Windows Vista. The use with List-View controls requires COMCTL32 version 6.10.

Though new for Windows Vista, this interface is not documented by Microsoft in the January 2007 edition of the Software Development Kit (SDK) for Windows Vista.