O sistema operacional Windows possui um recurso de arrastar e soltar muito conveniente, que é de conhecimento comum de qualquer usuário, mas há uma visão técnica dele; algum desenvolvedor em algum momento adicionou esse recurso ao sistema operacional. E é um ótimo recurso, melhora bastante a experiência do usuário. Aqui está uma foto para referência.
O que eu estou querendo saber é como esse recurso funciona "nos bastidores?" Encontrei artigos online explicando seu comportamento, por exemplo, arrastar um arquivo de um local de rede irá copiar o arquivo em vez de movê-lo, mas esse não é o tipo de explicação que estou procurando.
Estou procurando uma explicação mais técnica sobre o que ele faz. Se eu clicar com o botão direito do mouse em um arquivo, selecionar "Cortar" e, em seguida, clicar com o botão direito em um diretório diferente e selecionar "Colar" - para mim, o usuário, parece o mesmo procedimento geral de arrastar e soltar, estou apenas não usando o recurso de conveniência. Mas do ponto de vista técnico é a operação correta que está ocorrendo? Quando arrasto um arquivo e o Windows o move de um diretório para outro, ele realmente executa uma ação de corte no arquivo de origem, copia o arquivo para o destino e executa uma ação de exclusão no arquivo de origem? Talvez haja uma etapa de validação em algum ponto do processo também. Eu diria que o arquivo inteiro é gravado na memória antes da movimentação ou partes do arquivo são gravadas na memória conforme ele é movido.
Eu adoraria saber toda e qualquer informação técnica e "nos bastidores" que alguém tem a oferecer sobre a funcionalidade de arrastar e soltar (para uma função dll, se alguém souber) e como ela se compara a outros métodos de mover um arquivo como recortar e colar.
FYI: Minhas informações podem estar desatualizadas porque estou datado.
Nos bastidores, arrastar e soltar usa objetos COM. COM é um mundo inteiro de dor, mas basicamente permite que diferentes aplicativos conversem entre si. Ao arrastar e soltar, você cria uma mensagem que é enviada ao aplicativo de destino.
Há mais do que apenas uma solução para isso (como objetos de arquivo versus objetos que não são de arquivo). Presumo que os aplicativos da Windows Store tenham uma implementação não COM moderna.
Eu sugiro que você primeiro navegue sobre o que é COM:
https://en.wikipedia.org/wiki/Component_Object_Model
E então satisfaça sua curiosidade olhando para isso:
https://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra