Partilhar via


Formatos da área de transferência do Shell

Os formatos da área de transferência do Shell são usados para identificar o tipo de dados do Shell que estão sendo transferidos através da área de transferência. A maioria dos formatos da área de transferência do Shell identifica um tipo de dados, como uma lista de nomes de arquivos ou ponteiros para listas de identificadores de item (PIDLs). No entanto, alguns formatos são usados para a comunicação entre a origem e o destino. Eles podem agilizar o processo de transferência de dados suportando operações do Shell, como de movimentação otimizada e delete_on_paste. Os dados do shell estão sempre contidos em um de objeto de dados que usa uma estrutura deFORMATETCcomo uma maneira mais geral de caracterizar dados. O membro cfFormat da estrutura é definido como o formato da área de transferência para o item específico de dados. Os outros membros fornecem informações adicionais, como o mecanismo de transferência de dados. Os dados estão contidos em uma estrutura deSTGMEDIUM.

Observação

Os identificadores de formato padrão da área de transferência têm a forma CF_XXX. Um exemplo comum é o CF_TEXT, que é usado para transferir dados de texto ANSI. Esses identificadores têm valores predefinidos e podem ser usados diretamente com estruturas de FORMATETC. Com exceção do CF_HDROP, os identificadores de formato Shell não são predefinidos. Com exceção de DragWindow, eles têm a forma CFSTR_XXX. Para diferenciar esses valores de formatos predefinidos, eles são frequentemente referidos como simplesmente formatos . No entanto, ao contrário dos formatos predefinidos, eles devem ser registrados tanto pela origem quanto pelo destino antes de poderem ser usados para transferir dados. Para registrar um formato Shell, inclua o arquivo de cabeçalho Shlobj.h e passe o identificador de formatoCFSTR_ XXX para RegisterClipboardFormat. Esta função retorna um valor de formato de área de transferência válido, que pode ser usado como o cfFormat membro de uma estrutura de FORMATETC.

 

Os formatos da área de transferência do Shell são organizados aqui em três grupos, com base em como eles são usados.

Formatos para transferência de objetos do sistema de arquivos

Esses formatos são usados para transferir um ou mais arquivos ou outros objetos Shell.

CF_HDROP

Este formato de área de transferência é usado ao transferir os locais de um grupo de arquivos existentes. Ao contrário dos outros formatos do Shell, ele é predefinido, portanto, não há necessidade de chamar RegisterClipboardFormat. Os dados consistem em uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro da hGlobal da estrutura aponta para uma estruturaDROPFILEScomo seu membro da hGlobal.

O pFiles membro da estruturaDROPFILEScontém um deslocamento para uma matriz de caracteres de terminada nula dedupla que contém os nomes dos arquivos. Se você estiver extraindo um formato CF_HDROP de um objeto de dados, poderá usar DragQueryFile para extrair nomes de arquivo individuais do objeto de memória global. Se você estiver criando um formato de CF_HDROP para colocar em um objeto de dados, precisará construir a matriz de nome de arquivo.

A matriz de nome de arquivo consiste em uma série de cadeias de caracteres, cada uma contendo o caminho totalmente qualificado de um arquivo, incluindo o de terminação NULL caractere. Um caractere de nulo adicional é acrescentado à cadeia de caracteres final para encerrar a matriz. Por exemplo, se os arquivos c:\temp1.txt e c:\temp2.txt estiverem sendo transferidos, a matriz de caracteres terá esta aparência:

c:\temp1.txt'\0'c:\temp2.txt'\0''\0'

Observação

Neste exemplo, '\0' é usado para representar o caractere nulo, não os caracteres literais que devem ser incluídos.

Se o objeto foi copiado para a área de transferência como parte de uma operação de arrastar e soltar, o pt membro da estruturaDROPFILES contém as coordenadas do ponto onde o objeto foi descartado. Você pode usar DragQueryPoint para extrair as coordenadas do cursor.

Se esse formato estiver presente em um objeto de dados, um loop de arrasto OLE simulará WM_DROPFILES funcionalidade com destinos de soltar não OLE. Isso é importante se seu aplicativo for a origem de uma operação de arrastar e soltar em um sistema Windows 3.1.

CFSTR_FILECONTENTS

Esse identificador de formato é usado com o formato CFSTR_FILEDESCRIPTOR para transferir dados como se fosse um arquivo, independentemente de como ele é realmente armazenado. Os dados consistem em uma estrutura STGMEDIUM que representa o conteúdo de um arquivo. O arquivo é normalmente representado como um objeto de fluxo, o que evita ter que colocar o conteúdo do arquivo na memória. Nesse caso, o membro vinculado da estrutura STGMEDIUM é definido como TYMED_ISTREAM e o arquivo é representado por uma interfaceIStream. O arquivo também pode ser um objeto de armazenamento ou de memória global (TYMED_ISTORAGE ou TYMED_HGLOBAL). O formato CFSTR_FILEDESCRIPTOR associado contém uma estruturaFILEDESCRIPTOR para cada arquivo que especifica o nome e os atributos do arquivo.

O destino trata os dados associados a um formato CFSTR_FILECONTENTS como se fosse um arquivo. Quando o destino chama IDataObject::GetData para extrair os dados, ele especifica um arquivo específico definindo o lindex membro da estrutura deFORMATETC para o índice baseado em zero da estrutura dedoFILEDESCRIPTOR do arquivo no formato de CFSTR_FILEDESCRIPTOR que o acompanha. Em seguida, o destino usa o ponteiro de interface retornado ou o identificador de memória global para extrair os dados.

CFSTR_FILEDESCRIPTOR

Este identificador de formato é usado com o formato CFSTR_FILECONTENTS para transferir dados como um grupo de arquivos. Esses dois formatos são a maneira preferida de transferir objetos do Shell que não são armazenados como arquivos do sistema de arquivos. Por exemplo, esses formatos podem ser usados para transferir um grupo de mensagens de e-mail como arquivos individuais, mesmo que cada e-mail seja realmente armazenado como um bloco de dados em um banco de dados. Os dados consistem em uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro hGlobal da estrutura aponta para um FILEGROUPDESCRIPTOR estrutura que é seguida por uma matriz contendo um FILEDESCRIPTOR estrutura para cada arquivo no grupo. Para cada estrutura FILEDESCRIPTOR, há um formato CFSTR_FILECONTENTS separado que contém o conteúdo do arquivo. Para identificar o formato CFSTR_FILECONTENTS de um determinado arquivo, defina o valor lIndex da estruturaFORMATETC como o índice baseado em zero da estrutura FILEDESCRIPTOR do arquivo.

O formato CFSTR_FILEDESCRIPTOR é comumente usado para transferir dados como se fosse um grupo de arquivos, independentemente de como eles são realmente armazenados. Do ponto de vista do alvo, cada formato CFSTR_FILECONTENTS representa um único arquivo e é tratado de acordo. No entanto, a fonte pode armazenar os dados da maneira que quiser. Embora um formato CSFTR_FILECONTENTS possa corresponder a um único ficheiro, também pode, por exemplo, representar dados extraídos pela fonte de uma base de dados ou documento de texto.

CFSTR_FILENAME

Este identificador de formato é usado para transferir um único arquivo. Os dados consistem em uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro hGlobal da estrutura aponta para uma única cadeia de caracteres terminadanula que contém o caminho de arquivo totalmente qualificado do arquivo. Este formato foi substituído pelo CF_HDROP, mas é suportado para compatibilidade com versões anteriores com aplicações do Windows 3.1.

CFSTR_FILENAMEMAP

Esse identificador de formato é usado quando um grupo de arquivos em CF_HDROP formato está sendo renomeado e transferido. Os dados consistem em uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro hGlobal da estrutura aponta para uma matriz de caracteres terminada por nula dedupla. Essa matriz contém um novo nome para cada arquivo, na mesma ordem em que os arquivos são listados no formato de CF_HDROP que os acompanha. O formato da matriz de caracteres é o mesmo usado por CF_HDROP para listar os arquivos transferidos.

CFSTR_MOUNTEDVOLUME

Esse identificador de formato é usado para transferir um caminho em um volume montado. É semelhante ao CF_HDROP, mas contém apenas um único caminho e pode lidar com as cadeias de caracteres de caminho mais longas que podem ser necessárias para representar um caminho quando o volume é montado em uma pasta. Os dados consistem em uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro hGlobal da estrutura aponta para uma única cadeia de caracteres terminadanula que contém o caminho de arquivo totalmente qualificado. A cadeia de caracteres de caminho deve terminar com um caractere '\', seguido pelo de terminação NULL.

Antes do Windows 2000, os volumes podiam ser montados apenas em letras de unidade. Para o Windows 2000 e sistemas posteriores com uma unidade formatada NTFS, você também pode montar volumes em pastas vazias. Este recurso permite que um volume seja montado sem ocupar uma letra de unidade. O volume montado pode usar qualquer formato suportado atualmente, incluindo FAT, FAT32, NTFS e CDFS.

Você pode adicionar páginas a uma folha de propriedades da unidade implementando um manipulador de folha de propriedades . Se o volume for montado em uma letra de unidade, o Shell passará as informações do caminho para o manipulador com o formato CF_HDROP. Com o Windows 2000 e sistemas posteriores, o formato CF_HDROP é usado quando um volume é montado em uma letra de unidade, assim como nos sistemas anteriores. No entanto, se um volume é montado em uma pasta, o identificador de formato CFSTR_MOUNTEDVOLUME é usado em vez de CF_HDROP.

Se apenas letras de unidade forem usadas para montar volumes, somente CF_HDROP serão usadas e os manipuladores de folha de propriedades existentes funcionarão como faziam com sistemas anteriores. No entanto, se você quiser que o manipulador exiba uma página para volumes montados em pastas, bem como letras de unidade, o manipulador deve ser capaz de entender os formatos CSFTR_MOUNTEDVOLUME e CF_HDROP.

CFSTR_SHELLIDLIST

Esse identificador de formato é usado ao transferir os locais de um ou mais objetos de namespace existentes. Ele é usado da mesma forma que CF_HDROP, mas contém PIDLs em vez de caminhos do sistema de arquivos. O uso de PIDLs permite que o formato CFSTR_SHELLIDLIST manipule objetos virtuais, bem como objetos do sistema de arquivos. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro da hGlobal da estrutura aponta para uma estrutura da CIDA.

O aoffset membro da estruturaCIDAé uma matriz que contém deslocamentos para o início da estrutura deITEMIDLISTpara cada PIDL que está sendo transferido. Para extrair um PIDL específico, primeiro determine seu índice. Em seguida, adicione o aoffset valor que corresponde a esse índice ao endereço da estrutura CIDA.

O primeiro elemento de aoffset contém um deslocamento para o PIDL totalmente qualificado de uma pasta pai. Se este PIDL estiver vazio, a pasta pai será a área de trabalho. Cada um dos elementos restantes da matriz contém um deslocamento para um dos PIDLs a serem transferidos. Todos esses PIDLs são relativos ao PIDL da pasta pai.

As duas macros a seguir podem ser usadas para recuperar PIDLs de uma estrutura deCIDA. O primeiro leva um ponteiro para a estrutura e recupera o PIDL da pasta pai. O segundo leva um ponteiro para a estrutura e recupera um dos outros PIDLs, identificados por seu índice baseado em zero.

#define GetPIDLFolder(pida) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])

#define GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])

Observação

O valor retornado por essas macros é um ponteiro para a estrutura deITEMIDLISTdo PIDL. Como essas estruturas variam em comprimento, você deve determinar o final da estrutura percorrendo cada uma das estruturas ITEMIDLIST estrutura SHITEMID até chegar ao NULL de dois bytes que marca o fim.

CFSTR_SHELLIDLISTOFFSET

Esse identificador de formato é usado com formatos como CF_HDROP, CFSTR_SHELLIDLISTe CFSTR_FILECONTENTS para especificar a posição de um grupo de objetos após uma transferência. Os dados consistem em uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro hGlobal da estrutura aponta para uma matriz de POINT estruturas. A primeira estrutura especifica as coordenadas da tela, em pixels, do canto superior esquerdo do retângulo que encerra o grupo. O restante das estruturas especifica os locais dos objetos individuais em relação à posição do grupo. Eles devem estar na mesma ordem que a usada para listar os objetos no formato associado.

Formatos para transferência de objetos virtuais

O formato CFSTR_SHELLIDLIST pode ser usado para transferir o sistema de arquivos e objetos virtuais. No entanto, existem também vários formatos especializados para transferir tipos particulares de objetos virtuais.

CFSTR_NETRESOURCES

Esse identificador de formato é usado ao transferir recursos de rede, como um domínio ou servidor. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para uma estruturaNRESARRAY. O nr membro dessa estrutura indica uma estrutura de NETRESOURCE cujo membro lpRemoteName contém uma cadeia de caracteres null-terminated que identifica o recurso de rede. O destino de descarte pode usar os dados com qualquer uma das funções de rede do Windows (WNet) API, como WNetAddConnection, para executar operações de rede no objeto.

CFSTR_PRINTERGROUP

Este identificador de formato é usado ao transferir os nomes amigáveis das impressoras. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para uma cadeia de caracteres no mesmo formato usado com CF_HDROP. No entanto, o pFiles membro da estruturaDROPFILES contém um ou mais nomes amigáveis de impressoras em vez de caminhos de arquivo.

CFSTR_INETURL

Este identificador de formato substitui CFSTR_SHELLURL (preterido). Se você quiser que seu aplicativo manipule URLs da área de transferência, use CFSTR_INETURL em vez de CFSTR_SHELLURL (preterido). Este formato oferece a melhor representação da área de transferência de um único URL. Se UNICODE não estiver definido, o aplicativo recuperará a versão CF_TEXT/CFSTR_SHELLURL da URL. Se UNICODE for definido, o aplicativo recuperará a versão CF_UNICODE da URL.

CFSTR_SHELLURL (preterido)

Observação

Este identificador de formato foi preterido; use CFSTR_INETURL em vez disso.

 

Formatos para comunicação entre origem e destino

Estes identificadores de formato permitem a comunicação entre a origem e o destino. Os formatos acompanham os dados e dão aos aplicativos um maior grau de controle sobre operações de mover-copiar-colar ou arrastar e soltar envolvendo objetos do Shell.

CFSTR_INDRAGLOOP

Esse identificador de formato é usado por um objeto de dados para indicar se ele está em um loop de arrastar e soltar. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para um valor de DWORD. Se o valor DWORD for diferente de zero, o objeto de dados estará dentro de um loop de arrastar e soltar. Se o valor for definido como zero, o objeto de dados não estará dentro de um loop de arrastar e soltar.

Alguns destinos de soltar podem chamar IDataObject::GetData e tentar extrair dados enquanto o objeto ainda está dentro do loop de arrastar e soltar. A renderização completa do objeto para cada ocorrência pode fazer com que o cursor de arraste fique parado. Se o objeto de dados suportar CFSTR_INDRAGLOOP, o destino pode, em vez disso, usar esse formato para verificar o status do loop de arrastar e soltar e evitar a renderização intensiva de memória do objeto até que ele seja realmente descartado. Os formatos que consomem muita memória para renderizar ainda devem ser incluídos no enumerador de FORMATETC e em chamadas para IDataObject::QueryGetData. Se o objeto de dados não definir CFSTR_INDRAGLOOP, ele deve agir como se o valor estivesse definido como zero.

CFSTR_LOGICALPERFORMEDDROPEFFECT

Versão 5.0.Esse identificador de formato permite que uma fonte de descarte chame o método IDataObject::GetData do objeto de dados do objeto de dados para determinar o resultado de uma transferência de dados do Shell. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para um DWORD contendo um valor deDROPEFFECT.

O identificador de formato CFSTR_PERFORMEDDROPEFFECT destinava-se a permitir que o destino indicasse ao objeto de dados qual operação realmente ocorreu. No entanto, o Shell usa movimentos otimizados para objetos do sistema de arquivos sempre que possível. Nesse caso, o Shell normalmente define o valor CFSTR_PERFORMEDDROPEFFECT como DROPEFFECT_NONE, para indicar ao objeto de dados que os dados originais foram excluídos. Assim, a fonte não pode usar o valor CFSTR_PERFORMEDDROPEFFECT para determinar qual operação ocorreu. Embora a maioria das fontes não necessite desta informação, existem algumas exceções. Por exemplo, mesmo que as movimentações otimizadas eliminem a necessidade de uma fonte excluir quaisquer dados, a fonte ainda pode precisar atualizar um banco de dados relacionado para indicar que os arquivos foram movidos ou copiados.

Se uma fonte precisar saber qual operação ocorreu, ela poderá chamar o método IDataObject::GetData do objeto de dados e solicitar o formato CFSTR_LOGICALPERFORMEDDROPEFFECT. Este formato reflete essencialmente o que acontece do ponto de vista do utilizador após a conclusão da operação. Se um novo arquivo for criado e o arquivo original for excluído, o usuário verá uma operação de movimentação e o valor de dados do formato será definido como DROPEFFECT_MOVE. Se o arquivo original ainda estiver lá, o usuário verá uma operação de cópia e o valor de dados do formato será definido como DROPEFFECT_COPY. Se um link foi criado, o valor de dados do formato será DROPEFFECT_LINK.

CFSTR_PASTESUCCEEDED

Esse identificador de formato é usado pelo destino para informar o objeto de dados, por meio de seu métodoIDataObject::SetData, que uma operação de exclusão ao colar foi bem-sucedida. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para um DWORD contendo um valor deDROPEFFECT. Este formato é usado para notificar o objeto de dados de que ele deve concluir a operação de corte e excluir os dados originais, se necessário. Para obter mais informações, consulte Operações de exclusão ao colar.

CFSTR_PERFORMEDDROPEFFECT

Esse identificador de formato é usado pelo destino para informar o objeto de dados por meio de seu método IDataObject::SetData do resultado de uma transferência de dados. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para um DWORD definido para o valor deDROPEFFECTapropriado, normalmente DROPEFFECT_MOVE ou DROPEFFECT_COPY.

Esse formato é normalmente usado quando o resultado de uma operação pode ser mover ou copiar, como em uma operação de de movimentação otimizada de ou excluir ao colar. Ele fornece uma maneira confiável para o alvo dizer ao objeto de dados o que realmente aconteceu. Ele foi introduzido porque o valor de pdwEffect retornado por DoDragDrop não indicava de forma confiável qual operação havia ocorrido. O formato CFSTR_PERFORMEDDROPEFFECT é a maneira confiável de indicar que um movimento não otimizado ocorreu.

CFSTR_PREFERREDDROPEFFECT

Este identificador de formato é usado pela fonte para especificar se o seu método preferido de transferência de dados é mover ou copiar. Um destino de descarte solicita esse formato chamando o métodoIDataObject::GetData do objeto de dados. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para um valor de DWORD. Esse valor é definido como DROPEFFECT_MOVE se uma operação de movimentação é preferida ou DROPEFFECT_COPY se uma operação de cópia é preferida.

Esse recurso é usado quando uma fonte pode suportar uma operação de movimentação ou cópia. Ele usa o formato CFSTR_PREFERREDDROPEFFECT para comunicar sua preferência ao destino. Como o destino não é obrigado a honrar a solicitação, o destino deve chamar o método deIDataObject::SetData dode origem com um formato CFSTR_PERFORMEDDROPEFFECT para informar ao objeto de dados qual operação foi realmente executada.

Com uma operação de de exclusão ao colar, o formato CFSTR_PREFERREDDROPFORMAT é usado para informar ao destino se a fonte fez um corte ou cópia. Com uma operação de arrastar e soltar, você pode usar CFSTR_PREFERREDDROPFORMAT para especificar a ação do Shell. Se esse formato não estiver presente, o Shell executará uma ação padrão, com base no contexto. Por exemplo, se um usuário arrasta um arquivo de um volume e o solta em outro volume, a ação padrão do Shell é copiar o arquivo. Ao incluir um formato CFSTR_PREFERREDDROPFORMAT no objeto de dados, você pode substituir a ação padrão e dizer explicitamente ao Shell para copiar, mover ou vincular o arquivo. Se o usuário optar por arrastar com o botão direito, CFSTR_PREFERREDDROPFORMAT especifica o comando padrão no arrastar e soltar menu de atalho. O usuário ainda é livre para escolher outros comandos no menu.

Antes do Microsoft Internet Explorer 4.0, um aplicativo indicava que estava transferindo tipos de arquivo de atalho definindo FD_LINKUI no dwFlags membro da estruturaFILEDESCRIPTOR. Os destinos, então, tiveram que usar uma chamada potencialmente demorada para IDataObject::GetData para descobrir se o sinalizador FD_LINKUI estava definido. Agora, a maneira preferida de indicar que os atalhos estão sendo transferidos é usar o formato CFSTR_PREFERREDDROPEFFECT definido como DROPEFFECT_LINK. No entanto, para compatibilidade com sistemas mais antigos, as fontes ainda devem definir o sinalizador FD_LINKUI.

CFSTR_TARGETCLSID

Esse identificador de formato é usado por um destino para fornecer seu CLSID à origem. Os dados são uma estrutura STGMEDIUM que contém um objeto de memória global. O membro hGlobal da estrutura aponta para o GUID CLSID do destino de queda.

Esse formato é usado principalmente para permitir que objetos sejam excluídos, arrastando-os para a Lixeira. Quando um objeto é descartado na Lixeira, o método IDataObject::SetData da fonte é chamado com um formato de CFSTR_TARGETCLSID definido como CLSID (CLSID_RecycleBin) da Lixeira. A fonte pode então excluir o objeto original.

CFSTR_UNTRUSTEDDRAGDROP

Esse identificador de formato é usado pelo Windows Internet Explorer e pelo Shell do Windows para fornecer um mecanismo através do qual bloquear ou solicitar operações de arrastar e soltar originadas do Internet Explorer em conjunto com o sinalizador URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY.

CFSTR_UNTRUSTEDDRAGDROP é adicionado pela origem de uma operação de arrastar e soltar para especificar que o objeto de dados pode conter dados não confiáveis. Os dados são representados por uma estrutura deSTGMEDIUMque contém um objeto de memória global. O membro hGlobal da estrutura aponta para um DWORD definido como um sinalizador dede ação de URL deapropriado para causar uma verificação de política por meio do método IInternetSecurityManager::P rocessUrlAction, usando o sinalizador PUAF_ENFORCERESTRICTED.

DragWindow

Esse formato é usado em uma operação de arrastar e soltar para identificar a imagem de arrastar (janela) de um objeto para que suas informações visuais possam ser atualizadas dinamicamente. Quando um objeto é arrastado sobre um destino de soltar, um aplicativo atualiza sua estruturaDROPDESCRIPTION em resposta ao IDropTarget::D ragOver ou IDropSource::GiveFeedback método. O DROPDESCRIPTION é atualizado com um novo DROPIMAGETYPE valor que indica a decoração a ser aplicada ao visual da janela de arrasto; por exemplo, uma indicação de que o arquivo está sendo copiado em vez de movido ou que o objeto não pode ser solto nesse local. No entanto, até que o objeto receba uma mensagem DDWM_UPDATEWINDOW, os elementos visuais não são atualizados. Esse formato fornece a HWND da janela de arrastar do destinatário para o remetente da mensagem DDWM_UPDATEWINDOW.

Os dados da área de transferência são do tipo TYMED_HGLOBAL. É um DWORD representação de um HWND. Os dados podem ser passados para a função ULongToHandle, definida em Basetsd.h, para fornecer um HWND de de 64 bits para uso no Windows de 64 bits.

Este formato não requer a inclusão de Shlobj.h.