Dúvida sobre um trecho de código

Estou lendo “C++ A Biblia” e encontrei um trecho de código que não estou entendendo, alguém pode me ajudar a disvendar esse mistério?

#include "windows.h"
#include "generic.h"
#include "winver.h"
MEUAPLIC ICON DISCARDABLE "GENERICO.ICO"
PEQUENO ICON DISCARDABLE "PEQUENO.ICO"
GENERICO MENU DISCARDABLE
BEGIN
     POPUP "&Arquivo"
     BEGIN
          MENU ITEM "&TESTAR"   IDM_TESTE
     END
END
VERSIONINFO
FILEVERSION 3,3,0,0
PRODUCTVERSION 3,3,0,0
FILEFLAGSMASK 0x3f1

Por que o visual studio entende esse trecho de código escrito em um cabeçalho qualquer???
Que BEGIN/END é esse? como isso funciona?? É outra linguagem portável para C++??? Ou isso é c++ também?

Pelo livro, esse é um arquivo de resources (recursos), que tem uma sintaxe especial (como esses begin e end, dentre outras coisas) e são tratados de forma diferenciada pelo compilador (usando, inclusive, um compilador à parte, chamado resource compiler), gerando informações específicas dentro do executável final.

Note que isso é específico do Windows. Você pode ler mais a respeito aqui: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380599(v=vs.85).aspx e aqui : https://en.wikibooks.org/wiki/Windows_Programming/Resource_Script_Reference (em inglês).

A não ser que você queira se tornar especialista nisso, não acho que precise se preocupar com aspectos tão específicos. E recomendo pegar um livro mais atualizado. Tanto o C++ quanto o próprio jeito de se programar para Windows mudou um bom tanto ultimamente.

Abraço.

Esse é o plano, virar um especialista, o objetivo final é desenvolver uma engine, mas estou contente em desenvolver aplicativos windows simples por enquanto.

Alguma sugestão de literatura que substitua C++ A BIBLIA??? Apesar de realmente ser bem antigo, o livro aborda muito conteúdo interessante.

O uso de arquivos de resource é um tópico específico da programação para Windows. Se seu objetivo é ser especialista em programação Windows (antiga, ainda por cima), tudo bem. Mas acho que há aspectos mais importantes a se estudar, então não se prenda a esse em específico.

Quanto a engine, depende do tipo de engine que você está falando. Se seu objetivo é construir uma biblioteca “simples” (como a SDL) e uma mini-engine 2D, já vai ter um trabalho razoável. Se quer voar mais alto e fazer algo 3D (uma Unity da vida), terá um looongo caminho pela frente, e não chegará perto do que quer sem passar por coisas como OpenGL e/ou DirectX, que são tópicos gigantescos por si sós. Em ambos os casos, arquivos de resource serão sua última preocupação.

Sim, aborda. Mas recomendo livros mais atuais como Princípios e Práticas de Programação com C++ (caso você tenha pouca experiência com C++, ou queira pegar quase do zero) e a última versão do C++ Como Programar do Deitel (este, em inglês), que cobre o C++ moderno (C++11).

Veja outras recomendações em http://www.pontov.com.br/site/cpp/46-conceitos-basicos/88-roadmap-c e http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list .

Abraço.

Hmmmmmm, entendi, na verdade eu tinha me prendido a isso, pois ontem eu estava tentando criar uma barra de menu em uma janela com algumas opções para acessar. Mas você tem razão, isso não tem quase nenhuma importância para mim, só estava fazendo por curiosidade mesmo.

Sim, quero montar algo 3D, mas não como a unity (A princípio). Em relação ao DirectX/OpenGL, estou comendo tudo que eu encontro sobre o DirectX. OpenGL eu não vi nada ainda.

Eu já tenho uma experiência considerável em C++, mas vou revisar esse do Deitel como você sugeriu.

Mas quando eu sair do Deitel??? Tem alguma sujestão de literatura sobre DirectX??? Atualmente eu estou apenas brincando com alguns tutoriais do Rastertek, pois é tudo que eu tenho sobre DirectX.

E Vlw pelas dicas, foram muito ricas para mim.

C++ A Biblia não esta meio ultrapassado, no que diz respeito a falta de conteudo das versões mais recente e mesmo a propria API Windows?

Não tive escolha =x… É o único que eu tenho aqui em casa, mas lendo as dicas do Terraskill e pontov eu decidi que vou fazer mais um investimento.

Eu não posso comprar todos, na verdade eu só posso comprar umzinho agora hahahaha. Digamos que eu tenha acabado de sair do básico, qual desses livros vocês recomendam que eu tenha???


DICA DO SITE PONTOV: http://www.pontov.com.br/site/cpp/46-conceitos-basicos/88-roadmap-c

The C++ Standard Library: A Tutorial and Reference de Nicolai M. Josuttis: programar em C++ hoje sem saber a STL é abrir mão de quase trinta anos anos de evolução da linguagem.

Effective C++ , do Scott Meyers: Faz você programar C++ de verdade, e não C com classes. Se você ainda usa #define para fazer constantes, ou não sabe para que declarar um método como const, leia esse livro;

More Effective C++ , do Scott Meyers: Uma boa extensão ao Effective C++.

Effective Modern C++, do Scott Meyers: Um grande livro sobre boas práticas envolvendo o C++11 e o C++14: incluindo os conceitos como move semantics, lambda e smart pointers.

Effective STL , do Scott Meyers: Saiba boas e más práticas envolvendo a STL;

Beyond the C++ Standard Library: An Introduction to Boost , do Björn Karlsson: Para quem quer entender bem as coleções extras da boost e o esquema de “garbage collection” via smart pointers que é possível com C++;

C++ Templates: The Complete Guide , de David Vandervoorde e Nicolai M. Josuttis: O guia mais completo, didático e explicativo sobre templates. Cobre desde a sintaxe básica até usos bastante avançados. Dá dicas de design e uso inteligente da programação genérica e meta-programação.

Modern C++ Design , de Andrei Alexandrescu: Definitivamente um dos melhores e mais importantes livros sobre design patterns envolvendo templates. Ajuda a entender os Allocators da STL, por exemplo. Entretanto, saibam bem templates antes de começa-lo. Ele é definitivamente um complemento ao livro anterior;

Jesus amado, R$240,00?? Esses livros vem com o USB para conectar direto na minha cabeça?? Vou procurar opções de exemplares usados, ta muito caro.

Mas de qualquer forma, eu gostaria de opções mais avançadas, eu acho que eu já tenho conhecimento suficiente para partir para algo mais avançado.

Não sei responder essa pergunta =(((… Como responde isso?

  • Eu li, entendi e pratiquei a maior parte dos primeiros 1300 tópicos da BÍBLIA DO C++…
  • Consigo entender como a pilha (memória) funciona por que eu já tenho alguma experiência em assembly.
  • Entendo o conceito de orientação a objetos, só não entendo ainda as vantagens do c++ em relação ao c, pois a única vantagem que eu percebi foi em relação a organização.
  • Não sei responder a diferença entre API, Biblioteca e DLL. Na minha cabeça é tudo biblioteca.
  • Estou muito bem em relação a lógica de programação e matemática, pois sou quase um engenheiro formado.

Podem me dar dicas se acharem que eu preciso fortalecer minha base eu ficaria grato de ouvir opiniões, pois eu quero botar minha engine para rodar o mais rápido possível, MAS COM QUALIDADE.