Guide pratique pour fournir des contrôles d’édition enrichis sans fenêtre avec des fonctionnalités de fenêtre

La fonctionnalité de fenêtre inclut la possibilité de recevoir des messages et la propriété d’un contexte d’appareil dans lequel dessiner. Les contrôles d’édition enrichis sans fenêtre reçoivent cette fonctionnalité par le biais d’une paire d’interfaces : ITextServices et ITextHost.

Bon à savoir

Technologies

Prérequis

  • C/C++
  • Programmation de l’interface utilisateur Windows

Instructions

Établir la fonctionnalité de fenêtre

L’exemple de code suivant montre comment créer l’hôte de texte et les services de texte.

    HRESULT hr;
    
    IUnknown* pUnk               = NULL;
    ITextServices* pTextServices = NULL;
    
    // Create an instance of the application-defined object that implements the ITextHost interface.
    TextHost* pTextHost = new TextHost();
    
    if (pTextHost == NULL) 
        goto errorHandler;

    // Create an instance of the text services object.
    hr = CreateTextServices(NULL, pTextHost, &pUnk);
    
    if (FAILED(hr))
        goto errorHandler;
        
    // Retrieve the IID_ITextServices interface identifier from Msftedit.dll. 
    IID* pIID_ITS = (IID*) (VOID*) GetProcAddress(hmodRichEdit, "IID_ITextServices");
               
    // Retrieve the ITextServices interface.    
    hr = pUnk->QueryInterface(*pIID_ITS, (void **)&pTextServices);
    
    if (FAILED(hr))
        goto errorHandler;

Notes

Le paramètre hmodRichEdit dans l’exemple de code est un handle pour le module Msftedit.dll et il est supposé que ce handle a déjà été récupéré par un appel à la fonction GetModuleHandle .

Exemple complet

Utilisation de contrôles d’édition enrichis sans fenêtre

Utilisation de contrôles d’édition enrichie

Démonstration des contrôles communs Windows (CppWindowsCommonControls)