Como fornecer controles de edição avançada sem janela com funcionalidade de janela

A funcionalidade de janela inclui a capacidade de receber mensagens e a propriedade de um contexto de dispositivo no qual desenhar. Os controles de edição avançada sem janela recebem essa funcionalidade por meio de um par de interfaces: ITextServices e ITextHost.

O que você precisa saber

Tecnologias

Pré-requisitos

  • C/C++
  • Programação da interface do usuário do Windows

Instruções

Estabelecer a funcionalidade da janela

O código de exemplo a seguir demonstra como criar o host de texto e serviços de texto.

    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;

Comentários

O parâmetro hmodRichEdit no exemplo de código é um identificador para o módulo Msftedit.dll e presume-se que esse identificador já tenha sido recuperado por uma chamada para a função GetModuleHandle .

Exemplo completo

Usando controles de edição avançada sem janela

Usando controles de edição avançada

Demonstração de controles comuns do Windows (CppWindowsCommonControls)