O WinRT pode realmente ser usado apenas nos limites?

15

A Microsoft (principalmente, Herb Sutter ) recomenda ao usar o WinRT com C ++ / CX para manter WinRT nos limites do aplicativo e manter o núcleo do aplicativo escrito no padrão ISO C ++.

Eu tenho escrito um aplicativo que gostaria de deixar portátil, então minha funcionalidade principal foi escrita em C ++ padrão, e agora estou tentando escrever um front end estilo Metro para ele usando C ++ / CX. Eu tive um pequeno problema com essa abordagem, no entanto. Por exemplo, se eu quiser empurrar um vetor de tipos C ++ definidos pelo usuário para um controle ListView XAML, eu tenho que envolver meu tipo definido pelo usuário em um tipo de ref / valor WinRT para que ele seja armazenado em Vector^ . Com essa abordagem, inevitavelmente, deixo uma grande parte das minhas classes C ++ com classes WinRT.

Esta é a primeira vez que eu tentei escrever um aplicativo nativo portátil em C ++. É realmente prático manter o WinRT ao longo dos limites como este? De que outra forma poderia esse tipo de núcleo portátil com um limite específico da plataforma ser tratado?

    
por Bret Kuhns 07.08.2012 / 19:03
fonte

2 respostas

8

IMHO (antigo programador; trabalhe na Microsoft, mas esta é uma opinião pessoal): antes que eu possa responder a esta pergunta, você tem que responder a outra pergunta:

Para onde o código está se movendo? Se você está com uma única plataforma (neste caso, WinRT), então fique perto da plataforma - e isso significa usar as abstrações existentes. Por exemplo, seu código usaria o Vector ^ para corresponder às necessidades do WinRT.

OTOH, se você está se mudando para outro lugar (o VMS balança!), então os padrões baseados fazem sentido.

Dado que as três maiores plataformas portáteis semelhantes a tablets no mercado usam linguagens diferentes para tarefas comuns de programação, mover o código pode não ser uma opção valiosa.

    
por 13.10.2012 / 21:53
fonte
0

Você não precisa usar o C ++ / CX, em vez disso, você pode usar o WRL ( Windows Runtime Library ), que é como os antigos modelos ATL, não o 'fingir' C ++ que é C ++ / CX. É a abordagem de "baixo nível" do MS para o consumo de objetos do WinRT e é completamente padrão em C ++ como o Grandad costumava escrever!

Pode não ser tão "legal" quanto C ++ / CX, mas isso é uma questão de opinião - minha opinião pessoal é que C ++ / CX é a terceira tentativa em um C ++ estendido e é uma terceira falha. Ignore e espere que seja da mesma forma que as outras duas encarnações.

    
por 12.10.2012 / 20:25
fonte