Come fornire controlli Rich Edit senza finestra con funzionalità di finestra

La funzionalità finestra include la possibilità di ricevere messaggi e la proprietà di un contesto di dispositivo in cui disegnare. I controlli di modifica avanzata senza finestra ricevono questa funzionalità tramite una coppia di interfacce: ITextServices e ITextHost.

Cosa è necessario sapere

Tecnologie

Prerequisiti

  • C/C++
  • Programmazione dell'interfaccia utente di Windows

Disposizioni

Stabilire la funzionalità della finestra

Il codice di esempio seguente illustra come creare l'host di testo e i servizi di testo.

    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;

Osservazioni

Il parametro hmodRichEdit nell'esempio di codice è un handle per il modulo Msftedit.dll e si presuppone che questo handle sia già stato recuperato da una chiamata alla funzione GetModuleHandle.

Esempio completo

uso di controlli Rich Edit senza finestra

Utilizzo di Rich Edit Controls

demo dei controlli comuni di Windows (CppWindowsCommonControls)