Você está aqui: C++ ::: Dicas & Truques ::: Aplicativos e Outros

Entendendo a função WinMain das aplicações GUI usando a Windows API

Quantidade de visualizações: 9587 vezes


Cada programa de interface gráfica escrito em C++ e usando a Windows API possui como ponto de entrada de execução, a função WinMain(). Esta função é a equivalente do main() em aplicações console. Veja sua assinatura:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE 
   hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
É possível usar esta função sem a macro WINAPI, ou seja:
int WinMain(HINSTANCE hInstance, HINSTANCE 
   hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
O primeiro passo a observar é que esta função deve retornar um valor inteiro quando finalizar. Isso serve para informar ao sistema operacional se algum erro ocorreu durante a tentativa de sua execução.

Vejamos agora uma explicação detalhada de seus parâmetros:

HINSTANCE hInstance - É um handle para o módulo executável do programa (o arquivo .exe na memória).
HINSTANCE hPrevInstance - Sempre NULL para programas Win32.
LPSTR lpCmdLine - Os argumentos da linha de comando como uma única string. Não inclui o nome do programa.
int nCmdShow - Um valor inteiro que pode ser passado para a função ShowWindow().

hInstance é usado para tarefas tais como carregar recursos ou outras que são realizadas em um módulo. Um móduolo é um EXE ou DLL carregada em seu programa.

hPrevInstance era usado como um handle para uma instância executada anteriormente no Win16. Este cenário não mais ocorre. Em Win32 podemos ignorar por completo este parâmetro.

Link para compartilhar na Internet ou com seus amigos:

C++ ::: STL (Standard Template Library) ::: Vector C++

Como criar um vector de inteiros em C++ e inserir elementos usando a função push_back()

Quantidade de visualizações: 7358 vezes
Este exemplo mostra como declarar um objeto da classe container vector da STL (Standard Template Library), inserir alguns inteiros usando a função push_back() e percorrê-los usando um iterador.

Veja o código completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá inteiros
  vector<int> valores;

  // vamos inserir três elementos
  valores.push_back(54);
  valores.push_back(13);
  valores.push_back(87);

  // vamos percorrer o vector e exibir os elementos
  vector<int>::iterator it;
  for(it = valores.begin(); it < valores.end(); it++){
    cout << *it << endl;
  }

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

54
13
87


C++ ::: STL (Standard Template Library) ::: Vector C++

Como criar um vector de strings em C++, inserir alguns nomes usando a função push_back() e percorrê-los usando um iterador

Quantidade de visualizações: 11004 vezes
Se você tem pouca experiência com a classe container vector da STL (Standard Template Library), este exemplo o ajudará um pouco. Aqui eu mostro como criar um vector de strings em C++, inserir alguns nomes nele usando a função push_back() e depois percorrê-los individualmente usando um iterador.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá strings
  vector<string> nomes;

  // vamos inserir três nomes
  nomes.push_back("Osmar J. Silva");
  nomes.push_back("Carlos de Souza");
  nomes.push_back("Maria Dias de Carvalho");

  // vamos percorrer o vector e exibir os nomes
  vector<string>::iterator it;
  for(it = nomes.begin(); it < nomes.end(); it++){
    cout << *it << endl;
  }

  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Osmar J. Silva
Carlos de Souza
Maria Dias de Carvalho


C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI

Programação MIDI usando C++ - Como usar um vetor de chars para construir uma mensagem MIDI e passá-lo para a função midiOutShortMsg() da API do Windows

Quantidade de visualizações: 2195 vezes
Nas dicas dessa seção nós vimos como é possível enviar uma mensagem MIDI para o dispositivo de saída por meio da função midiOutShortMsg() da API do Windows. Essa função recebe um handle para o dispositivo de saída MIDI e um valor DWORD contendo a mensagem MIDI.

Se você revisitar essas dicas, verá que na maioria delas nós informamos a mensagem MIDI diretamente no parâmetro da função (como um valor hexadecimal). Nesta dica mostrarei como é possível construir as mensagens MIDI usando seus valores individuais e, o que é melhor, usando valores decimais.

Para isso nós vamos construir um vetor de char e informar os valores que compõem a mensagem. É importante observar que a função midiOutShortMsg() exige que a mensagem MIDI seja informada na ordem de bytes "little endian" ou seja, o status MIDI é informado no byte de ordem mais baixa. Isso é conseguido com um cast do vetor para um unsigned long.

Veja o trecho de código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// vamos criar um vetor contendo os valores que compõem a mensagem MIDI
unsigned char vetor[4];
vetor[0] = 144; // Note-on no Canal 1
vetor[1] = 40; // Nota Mi na 4ª oitava
vetor[2] = 100; // Velocidade/volume da nota
vetor[3] = 0; // Não é usado
// e aqui é que acontece a mágica. Quando fazemos o cast do
// vetor para o tipo long sem sinal, os valores são colocados em
// little endian, justamente a ordem de bytes esperada pela
// função midiOutShortMsg()
unsigned long mensagem = *(unsigned long*)vetor;
// envia a mensagem MIDI
midiOutShortMsg(saida, mensagem);

Note que não coloquei o código todo. Para completá-lo, veja outras dicas dessa seção.


Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Água Fria: Reservatórios

Um reservatório é dimensionado com diversos componentes que auxiliam na manutenção e limpeza do mesmo. Sobre os componentes acessórios de um reservatório é correto afirmar:

A) A tubulação extravasora deve ter o mesmo diâmetro da tubulação de alimentação do reservatório.

B) A tubulação de limpeza deve estar posicionada acima da saída da distribuição predial.

C) Em pequenas edificações, com reservatórios de 500 litros, não é necessária a instalação de tubulação de limpeza.

D) A tubulação extravasora deve jogar a água em local visível para alertar sobre o extravasamento do reservatório.

E) É obrigatória a instalação de registro na saída da tubulação extravasora.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

Como é chamada a área de relevo mais elevado entre cursos de água contíguos e que serve para delimitação das bacias hidrográficas?

A) Vale fluvial.

B) Colúvio.

C) Interflúvio.

D) Planalto.

E) Planície pluvial.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Ética, Legislação e Entidades que regulamentam a profissão

São afirmativas corretas sobre a ética na profissão, exceto:

A) A ética é a reflexão sobre a moral. É ético aquele que age de acordo com os padrões de conduta ou prática correta, especialmente os padrões profissionais.

B) A engenharia, como profissão, deve contribuir para o bem-estar social, sendo o engenheiro responsável, através de suas ações e projetos, pelas consequências à sociedade que confia em sua competência profissional.

C) O comportamento ético para o engenheiro é uma habilidade tão importante como as habilidades técnicas, matemáticas e científicas.

D) Como engenheiro, você deve apoiar-se em seus princípios éticos pessoais, diferenciando pequenos desvios de ações de grande impacto à sociedade. Somente grandes ações configuram um problema ético.

E) A ética está associada ao estudo fundamentado dos valores morais que orientam o comportamento humano em sociedade.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Ética, Legislação e Entidades que regulamentam a profissão

Pensando no papel dos códigos de conduta ética desenvolvidos pelas empresas, qual afirmativa a seguir é incorreta?

A) Podem ser apresentados através das políticas e objetivos da empresa, bem como pode ser repassado de modo informal através da cultura da empresa.

B) Em geral, os códigos abordam temas relativos à qualidade dos serviços e produtos, assuntos sigilosos, tratamento de clientes e fornecedores, entre outros.

C) O código de ética é a referência suprema para conduta dos funcionários, sendo, inclusive, mais relevante que as leis e códigos das entidades de classe em uma situação de impasse.

D) Você deve sempre procurar seguir o código de conduta ética de sua empresa, o que lhe orientará na qualidade do trabalho e relacionamento com colegas, clientes e fornecedores.

E) É correto, em uma entrevista de trabalho, abordar o código de ética da organização, solicitando-o e perguntando sobre alguma temática.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Postura ética profissional

A ética na engenharia envolve muitas questões, entre elas o estudo das decisões, das políticas e dos valores que são moralmente desejáveis na prática dessa profissão.

Sendo assim, estudar ética na engenharia tem como objetivo:

A) Capacitar os engenheiros a identificarem oportunidades para que seus projetos sejam aceitos.

B) Capacitar os engenheiros a enfrentarem a complexidade moral envolvida nas decisões e ações do exercício.

C) Priorizar a conformidade com normas técnicas em detrimento de considerações éticas mais amplas.

D) Minimizar a importância do consentimento informado em projetos que impactam comunidades locais.

E) Priorizar sempre o lucro das empresas sobre os valores éticos na execução de projetos.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 44 usuários muito felizes estudando em nosso site.