Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ArthurBandeiraAguiar

Criar programas gráficos em C++ é muito tosco, não é?

Recommended Posts

Boa noite.

 

Eu estava vendo como criar programas gráficos em C++ , nossa!

Eu achei muita perda de tempo: no tutorial que eu vi, para o cara fazer uma simples caixa de diálogo, ele usou underline, sustenido, asterisco, letra L antes de aspas, letra maiúscula misturada com letra minúscula, uns 20 parâmetros exóticos, dois pontos, vírgula, pipe, arroba, e o diabo, parecia até que o professor estava escrevendo palavrões de estórias de gibis da Mônica: (&@****!) , horrível e pouco funcional.

 

Tá, vocês vão me dizer que tudo é questão de acostumar. Mas vem cá: vocês acham realmente prático, escrever uma interface gráfica através de texto????? Ainda mais quando o texto tem vários sinais estranhos com nomes bizarros de funções e variáveis!

 

Vamos pegar um exemplo prático:

O Adobe Photoshop, ele é um software poderoso, pesado e visual, o autor dele teve que faze-lo na unha usando texto e depois adivinhando a posição dos botões e ícones? Me digam por favor: o mercado de trabalho acharia prático isso? Em qual língua foi feito o adobe photoshop, o Office 2007 e outros programas tidos como "bonitinhos"?

 

Eu particularmente acho uma perda de tempo ter que criar interface gráfica usando códigos bizonhos.

Por acaso foi só o Visual Basic que teve a ideia de programar interface gráfica de forma gráfica?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que é tosco ou não é questão de opinião.

 

Dito isso, saiba que os asteriscos, pipes, aspas, underline e etc fazem parte ou da sintaxe da linguagem ou do toolkit gráfico usado.

 

O problema em se criar tela via componentes de GUI builders é alterar os mesmos p/ que se comportem como vc quer. Também existe a possibilidade de se ter um código ruim por trás do componente e isso dificilmente você vai conseguir alterar (seja porque não tem tempo, porque a documentção deixa a desejar ou porque é necessário possuir mais ferramentas). Uso object pascal via Lazarus no serviço e odeio trabalhar com aqueles componentes (são feios, não são padronizados -- cada um é de um site diferente, a documentação é ruim -- nem no código ela existe -- e é difícil alterar o comportamento padrão só mexendo nas propriedades do objeto).

 

Se vc tivesse pesquisado mais, saberia que existem GUI builders p/ outras linguagens (Java, Python, C++, C#). Tudo depende na realidade do toolkit que vc está usando (Swing, AWT, wxWidgets, Qt, GTK).

 

Photoshop: C++

MS Office: C++

Steam: C++ e Objective-C

Safari: C++ e Objective-C

Google Chrome: C++, Assembly, Python e Javascript

Chromium (versão opensource do Google Chrome): C e C++

Adobe Reader: C++

Compartilhar este post


Link para o post
Compartilhar em outros sites

O único toolkit que a muitos anos eu tentei mexer foi o Swing, mas eu nem lembro mais.

Mas me diga, os caras que fazem O adobe photoshop e MS Office programam tudo na unha? Tipo HTML era no passado? Ou esses toolkits permitem arrastar e soltar os controles que nem no visual basic.

 

Quanto aos Pipe, aspas e outros sinais, da linguagem, eu entendo que eles têm a sua função, mas não são nada elegantes e formais.

Uma coisa é eu escrever puts("aspas ponto e vírgula");

Outra é eu escrever

WINMAIN( _In_opt_ HWND hWnd,

  _In_opt_  LPCTSTR lpText,  _In_opt_  LPCTSTR lpCaption,  _In_      UINT uType 

){

 

}

 

Repare que a função recebe tantos parametros que chega a ser quebrada em inhas, os paremtros são exóticos, usam underline

e nomes como LPC(que isso? impressora?), depois temos o UType , seria um tipo U? Tipo U do que?

Alem de tudo , tipo da variável é _In_ ou Utype? O que é _IN_ ? No? No no o que?

Aí depois pra chutar o balde tem

 

MessageBox(        NULL,        (LPCWSTR)L"que desgraça, pior que isso, só objective C?",        (LPCWSTR)L"queima diabo",        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2    );
Eu nunca vi na minha vida uma letra do lado externo de uma aspas sem nenhum concatenador, o que quer dizer L"mensagem",
se fosse L+"Mensagem" até seria legal, mas o L encostado do lado de fora da aspa, parece totalmente fora dos padrões C, e aí pra fechar com chave de ouro, temos Pipes sendo usados não como Pipes mas sim como vírgulas.

Que loucura!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, HTML é uma coisa; Qt/GTK é outra.

HTML é uma linguagem de marcação, nem dá p/ ser considerado um toolkit gráfico. O que existe são coisas como o JQueryUI, Sencha UI, PrimeFaces, RichFaces, etc que contém componentes p/ web. Não confunda a existência de componentes gráficos com arrastar-e-soltar dentro de uma IDE.

WINMAIN é algo específico da API Windows. Isso não é C++ ou C regulado pelo ISO.

Até onde eu sei,

_In_      UINT uType

 

pode estar informando ao programador que a variável é do tipo unsigned int com alguma restrição (provavelmente somente de leitura) dada pelo _In_. Mas p/ dizer isso, vc tem que conhecer a API com a qual está trabalhando.

 

Sobre a letra fora da string: sabe que em Java vc tem que especificar se o 100.40 é double ou é float, certo? O que se faz é "anexar" um F ao número. Em Python existe diferença entre uma string e uma raw string, cujo prefixo é "r".

 

Sobre os pipes: não são vírgulas. Isso se chama bitwise operator. E está, sim, especificado nos padrões da linguagem.

 

Sugiro que estude mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também considero a API do Windows muito feia, e difícil de se trabalhar.

 

Se você der uma olhada em alguma biblioteca/algum framework que foca nisso, você vai ver que é muito mais fácil. Tenho preferência pelo Qt, a documentação é maravilhosa, a API é bem consistente e você ainda pode usar javascript para descrever a interface enquanto implementa a lógica da aplicação em C++ (isso chama QML). Também tem a WxWidgets, GTK, é só escolher.

 

E seu programa ainda fica portável.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também considero a API do Windows muito feia, e difícil de se trabalhar.

 

Se você der uma olhada em alguma biblioteca/algum framework que foca nisso, você vai ver que é muito mais fácil. Tenho preferência pelo Qt, a documentação é maravilhosa, a API é bem consistente e você ainda pode usar javascript para descrever a interface enquanto implementa a lógica da aplicação em C++ (isso chama QML). Também tem a WxWidgets, GTK, é só escolher.

 

E seu programa ainda fica portável.

 

 

Abraços :D

Ela não é feia, só é na minha opinião altamente estruturada...

 

Você tem que ter um bom conhecimento dela para escrever um simples programa, mas no final de tudo ela é como todas as outras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é Renato,

 

Eu sei que o QT é muito famoso pelo KDE e o GTK pelo Gnome , não é?
Eu também acho muito feio os códigos da WINAPI, parece o meu caderno de caligrafia na primeira série, tem espeto pra todo lado.
Mas voltando ao assunto Renato, por exemplo, se eu quero fazer um programa em curto tempo e gráfico em C++ usando a QT, eu tenho que decorar cada função, classe e variáveis ou existe algo tipo programação em Visual Basic que permite no IDE eu me precupar mais com a lógica do que com o layout? Hoje em dia o mercado , infelizmente , prefere um programa com visual bonitinho, mesmo que ele seja inseguro e fraco.

Por exemplo, se a pessoa programa na unha a interface gráfica, como que o cara que cuida do designer pode trabalhar no projeto? como vc lhe dá com essas situações?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Qt permite que você programe o layout de uma maneira muuuito simples com o QML, e a documentação deixa tudo muito fácil. Ao usar o QML, a interface fica toda em javascript, que são de fácil entendimento (me disseram que é tipo canvas a estrutura do JS), enquanto você implementa a lógica do programa em C++.

 

O designer tem que saber ler esse js, mas é como se fosse ler um html ou css. Aí ele vai poder modificar o visual da aplicação sem interferir com a implementação por baixo.

 

Ainda assim, se quer mesmo, você pode usar a IDE do Qt (o Qt Creator com o Qt Designer), ela permite que você trabalhe no estilo do Visual Studio, com aquelas forms, embora eu prefira fazer tudo na mão mesmo.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.