GUI em C++

Olá pessoal, eu queria saber o seguinte:

  • Alguém conhece uma boa apostila\livro\site para aprender sobre a Windows API?

  • Eu vi em um site que o próprio Windows é baseado em C, portanto, a Windows API também seria, certo?

  • E se a maioria dessas bibliotecas são baseadas em C, portanto há uma forma de construir uma janela na unha, sem usar nenhuma biblioteca? Eu gostaria de saber isso, porque se verdadeiro, seria possível criar um programa multiplataforma, e sem a necessidade de instalar nada na máquina cliente.

1 curtida
  • Alguém conhece uma boa apostila\livro\site para aprender sobre a Windows API?

Pontos de partida: https://msdn.microsoft.com/en-us/library/bb384843.aspx , http://www.winprog.org/tutorial/start.html e http://zetcode.com/gui/winapi/ . Há alguns livros ( exemplo http://www.charlespetzold.com/pw5/ ), mas não os conheço bem o bastante para recomendar algum em específico.

  • Eu vi em um site que o próprio Windows é baseado em C, portanto, a Windows API também seria, certo?

A API é feita em C e, possivelmente, mais algumas linguagens. Mas é compatível com C, como citado aqui: http://stackoverflow.com/questions/5450047/how-can-i-do-gui-programming-in-c (primeira resposta). Todos os recursos da API são acessíveis usando C.

  • E se a maioria dessas bibliotecas são baseadas em C, portanto há uma forma de construir uma janela na unha, sem usar nenhuma biblioteca? Eu gostaria de saber isso, porque se verdadeiro, seria possível criar um programa multiplataforma, e sem a necessidade de instalar nada na máquina cliente.

Na teoria, você utiliza bibliotecas que já estão disponíveis no sistema, afinal são bibliotecas do próprio Windows. Mas mesmo utilizando-as, pode ser que você precise de algo e acabe tendo que usar uma biblioteca de terceiros.

Porém, ao utilizar a API do Windows, você fica preso à esse sistema (por motivos óbvios). Ou seja, seu programa não será multiplataforma. Se esse é um dos seus objetivos, terá de usar alguma biblioteca/framework multiplataforma (como Qt, GTK ou wxWidgets). Inclusive, recomendo utilizá-las não só pela questão de multiplataforma, mas também pela produtividade; programar GUI com a Windows API é muito mais lento que com essas bibliotecas.

Abraço.

3 curtidas

Muito obrigado, poderia me responder mais 3 perguntas? São elas:

  • Eu observei em diversos sites que que eu pesquisei para decidir a aprender C\C++, e inclusive em outros fóruns. Em um deles, havia uma discussão sobre GUI, e o cara falou que Windows API era impraticável, e que era melhor ele usar C++. O outro cara respondeu que ia usar C++, por que continha uma ferramenta da qual não recordo o nome. Isso procede, ou realmente é necessário usar uma dessas bibliotecas?

  • Caso eu use a biblioteca, eu preciso coloca-la na máquina do cliente?

  • E, por último, para usar a biblioteca, eu tenho que baixar outro compilador? Eu vi em uma apostila sobre headers, e eles não contém código, certo? Portanto eu apenas fazer #include biblioteca.h não adiantaria, e eu precisaria ou de uma arquivo.c, para eu compilar junto, ou o compilador teria que substituir, não?

Programar em C/C++ para windows com a WinApi não chega a ser impraticável, mas é bem trabalhoso. Eu trabalho com a WinApi já faz muitos anos, e confesso que você se acostuma e o Visual Studio ajuda bastante. O QT é ótimo para C++ para Windows e Linux. A post do colega @TerraSkilll é justamente o que eu lhe diria também. Eu particularmente gosto de pensar em multiplataforma ou que a portabilidade seja simples e suave. QT e GTK são uma boa opção.

Algumas bibliotecas você terá que colocar no cliente mas são muito poucas. Se você utilizar o Visual Studio C++ para desenvolver um projeto para Windows você vai precisar do Visual C++ Redistributable Packages instalado no cliente.

Mas se você utilizar o compilador GCC(meu favorito) apenas algumas poucas bibliotecas serão necessárias.

Você não precisa fazer download de outro compilador. As bibliotecas serão instaladas junto com o compilador caso ele suporte desenvolvimento para Windows. O código para uma simples janela em Windows é bem complexo e existe muito código dentro dos headers não se limitando somente a windows.h existem outras que você usará conforme sua necessidade.

Uma dica, sempre use a ferramenta certa para o trabalho certo. Dependendo do trabalho ate Visual Basic pode ser a ferramenta certa. As vezes um programa em C++ faz a mesma coisa que um programa em C#, porém em C# você tem maior produtividade, então use C#.

No meu trabalho utilizamos C e C++ em 90% dos casos , para os outros 10% utilizamos Python simples e resolve o problema.

3 curtidas

Muito Obrigado mesmo!!