Você está aqui: C++ ::: Dicas & Truques ::: Aplicativos e Outros |
Entendendo a função WinMain das aplicações GUI usando a Windows APIQuantidade de visualizações: 9624 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) int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 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++ ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres individuais de uma string em C++ usando a função at()Quantidade de visualizações: 7236 vezes |
Nesta dica mostrarei como podemos usar a função at() para percorrer os caracteres individuais de uma palavra, frase ou texto em C++. Esta função recebe o índice do caractere que queremos acessar e retorna o caractere correspondente. Note que o índice começa em 0. 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 <string> using namespace std; // função principal do programa int main(int argc, char *argv[]){ // vamos criar uma nova string string palavra("PYTHON"); // vamos percorrer os caracteres um de cada vez for(int i = 0; i < palavra.size(); i++){ cout << palavra.at(i) << "\n"; } cout << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: P Y T H O N |
C++ ::: Win32 API (Windows API) ::: Aplicativos e Outros |
C++ Windows API GUI - Como criar sua primeira aplicação de interface gráfica usando C++ e WinAPIQuantidade de visualizações: 47506 vezes |
Esta dica mostra o código completo para uma aplicação de interface gráfica usando C++ e a Win32 (WinAPI - Windows Programming Interface). Trata-se de uma janela simples, mas com todas as características presentes em todas as janelas das aplicações Windows: uma barra de títulos, o ícone e os botões de maximizar, minimizar e fechar. Antes de executar o exemplo observe que este código contém o ponto inicial para a criação de qualquer aplicação gráfica em C++/WinAPI, a saber: A função de entrada WinMain, o laço de mensagens Message Loop, a função de callback Window Procedure e as técnicas de registrar e criar a janela. Neste momento não discutimos os detalhes do código. Em outras dicas você encontrará análises mais aprofundadas de cada parte. Este código foi escrito e testado no Dev-C++, mas, deve funcionar sem problemas em outros compiladores C++ para Windows. Assim, abra o Dev-C++, vá em File -> New -> Projec. Na aba Basic, selecione Console Application, dê um nome ao projeto e deixe a opção C++ Project marcada. Salve o projeto e inclua o código abaixo no arquivo .cpp principal: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <windows.h> // define o nome da classe de janela const char nomeJanela[] = "aCodigos"; // esta é a Window Procedure LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ switch(msg){ case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } // função de entrada da aplicação int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASSEX wc; HWND hwnd; MSG Msg; // vamos registrar a Window Class wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszMenuName = NULL; wc.lpszClassName = nomeJanela; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&wc)){ MessageBox(NULL, "Erro ao registrar a janela!", "Erro!", MB_ICONEXCLAMATION | MB_OK); return 0; } // cria a janela hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, nomeJanela, "Minha primeira aplicação Win32", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 350, 200, NULL, NULL, hInstance, NULL); if(hwnd == NULL){ MessageBox(NULL, "Erro ao criar a janela!", "Erro!", MB_ICONEXCLAMATION | MB_OK); return 0; } // mostra a janela ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // Este é o laço de mensagens (Message Loop) while(GetMessage(&Msg, NULL, 0, 0) > 0){ TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; } Pronto! Só compilar (geralmente F9 no Dev-C++), observar o resultado e estudar o código atentamente. |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercício Resolvido de C++ - Como testar se um ano é bissexto em C++ - Um programa que lê um ano com quatro dígitos e informa se ele é bissexto ou nãoQuantidade de visualizações: 371 vezes |
Pergunta/Tarefa: Chama-se ano bissexto o ano ao qual é acrescentado um dia extra, ficando ele com 366 dias, um dia a mais do que os anos normais de 365 dias, ocorrendo a cada quatro anos (exceto anos múltiplos de 100 que não são múltiplos de 400). Isto é feito com o objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano. O último ano bissexto foi 2012 e o próximo será 2016. Um ano é bissexto se ele for divisível por 4 mas não por 100, ou se for divisível por 400. Escreva um programa C++ que pede ao usuário um ano com quatro dígitos e informa se ele é bissexto ou não. Sua saída deverá ser parecida com: Informe o ano: 2024 O ano informado é bissexto. Veja a resolução comentada deste exercício usando C++: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> using namespace std; // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas para resolver o problema int ano; // vamos solicitar que o usuário informe um ano cout << "Informe o ano: "; cin >> ano; // vamos verificar se o ano informado é bissexto if(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)){ cout << "O ano informado é bissexto."; } else{ cout << "O ano informado não é bissexto."; } cout << "\n" << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software 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 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 |