Hello,

Le problème que j'ai c'est que je n'arrive pas de trouver une solution pour déssiner un slider d'une manière personnalisé en ActiveX.

En fait je suis en train de reprendre un projet qui consiste de contrôles activeX et la plupart entre eux peut être personnalisé à partir des propriétés globales, mais par exemple pour les sliders ceci n'a pas été implémenté.

Donc la classe de base de la classe slider hérite des classes suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class ATL_NO_VTABLE CCybWidget :
	public CComCoClass<CCybAnyWidget, CLSID_CybAnyWidget>,
	public CComControl<CCybAnyWidget>,
	public CComObjectRootEx<CComSingleThreadModel>,
	public CCyFWDictionaryEventHandler,
	public CCyFWHMIStyleManagerEventHandler,
	public CStockPropImpl<CCybAnyWidget, ICybAnyWidget, IID_ICybAnyWidget, &LIBID_CyFWWidgetLibraryLib>,
	public IConnectionPointContainerImpl<CCybAnyWidget>,
	public IDataObjectImpl<CCybAnyWidget>,
	public IObjectSafetyImpl<CCybAnyWidget, INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>,
	public IOleControlImpl<CCybAnyWidget>,
	public IOleInPlaceActiveObjectImpl<CCybAnyWidget>,
	public IOleInPlaceObjectWindowlessImpl<CCybAnyWidget>,
	public IOleObjectImpl<CCybAnyWidget>,
	public IPersistPropertyBagImpl<CCybAnyWidget>,
	public IPersistStorageImpl<CCybAnyWidget>,
	public IPersistStreamInitImpl<CCybAnyWidget>,
	public IPropertyNotifySinkCP<CCybAnyWidget>,
	public IProvideClassInfo2Impl<CLSID_CybAnyWidget, DIID__ICybAnyWidgetEvents, &LIBID_CyFWWidgetLibraryLib>,
	public IQuickActivateImpl<CCybAnyWidget>,
	public ISpecifyPropertyPagesImpl<CCybAnyWidget>,
	public ISupportErrorInfo,
	public IViewObjectExImpl<CCybAnyWidget>
Donc actuellement un slider par défaut est utilisé. Puisque il s'agit d'une librairie qui est utilisée dans d'autres parties du projet, alors les sliders et les autres contrôles sont créés dynamiquement.

Si jamais j'ai déjà trouvé une classe qui pourrait dessiner un slider personnalisé sur codeproject, mais ceci a été fait pour MFC, donc je ne vois pas comment intercepter le NM_CUSTOMDRAW message dans ATL et le transmettre à cette classe pour qu'elle le traite.

Est-ce que quelqu'un aurait une idée?

Merci beaucoup,
Greg