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: 48071 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. |
Python ::: Dicas & Truques ::: HTTP Web Server |
Como criar um servidor web em Python usando as classes BaseHTTPRequestHandler e HTTPServerQuantidade de visualizações: 835 vezes |
|
Nesta dica mostrarei como criar um web server em Python, ou seja, o nosso próprio servidor web. Para isso nós vamos criar uma classe ServidorWeb que herda de BaseHTTPRequestHandler, que nos fornece todos os métodos necessários para tratar requisições HTTP, tais como GET e POST. Note que definir o nome do host como "localhost" e a porta como "8080". Veja o código completo para o nosso web server em Python: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
# precisamos importar os objetos BaseHTTPRequestHandler e HTTPServer
# do módulo http.server
from http.server import BaseHTTPRequestHandler, HTTPServer
# precisamos também do módulo time
import time
# vamos criar a classe ServidorWeb, que herda de
# BaseHTTPRequestHandler
class ServidorWeb(BaseHTTPRequestHandler):
# vamos implementar o método que responde às requisições GET
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes("<html><head><title>Meu Servidor Web</title></head>",
"utf-8"))
self.wfile.write(bytes("<p>Requsição: %s</p>" % self.path,
"utf-8"))
self.wfile.write(bytes("<body>", "utf-8"))
self.wfile.write(bytes("<p>Exemplo de Web Server em Python</p>",
"utf-8"))
self.wfile.write(bytes("</body></html>", "utf-8"))
# função principal do programa
def main():
# agora criamos um objeto HTTPServer
host = "localhost"
porta = 8080
servidorWeb = HTTPServer((host, porta), ServidorWeb)
print("Servidor iniciado em http://%s:%s" % (host, porta))
# tentamos levantar o servidor
try:
servidorWeb.serve_forever()
except KeyboardInterrupt:
pass
# liberamos o servidor web
servidorWeb.server_close()
print("O servidor web foi parado.")
if __name__== "__main__":
main()
Ao executar este código você verá a seguinte mensagem: Servidor iniciado em http://localhost:8080 A partir daí você pode abrir o seu navegador neste endereço e já verá a página web que definimos no corpo do método do_GET() da classe ServidorWeb. Agora é só explorar as dicas dessa seção para aprender ainda mais sobre redes, soquetes e servidores web usando a linguagem Python. |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de C++ - Escreva um programa C++ que mostra como somar os elementos da diagonal secundária de uma matrizQuantidade de visualizações: 16137 vezes |
|
Exercícios Resolvidos de C++ - Escreva um programa C++ que mostra como somar os elementos da diagonal secundária de uma matriz Pergunta/Tarefa: Em álgebra linear, a diagonal secundária de uma matriz A é a coleção das entradas Aij em que [i]i[/i] + [i]j[/i] é igual a n + 1 (onde n é a ordem da matriz). A diagonal secundária de uma matriz quadrada une o seu canto inferior esquerdo ao canto superior direito (conforme mostrado na saída do problema proposto abaixo). Escreva um programa C++ que declara uma matriz 3x3 e pede ao usuário para informar seus valores. Em seguida mostre todos os valores da matriz e a soma dos elementos da diagonal secundária. Sua saída deverá ser parecida com a imagem abaixo: ![]() Resposta/Solução: Veja a resolução comentada deste exercício: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[])
{
int matriz[3][3]; // uma matriz de três linhas e três colunas
int soma_diagonal = 0; // guarda a soma dos elementos na diagonal secundária
// vamos ler os valores para os elementos da matriz
for(int i = 0; i < 3; i++){ // linhas
for(int j = 0; j < 3; j++){ // colunas
cout << "Valor para a linha " << i << " e coluna " << j << ": ";
cin >> matriz[i][j];
}
}
// vamos mostrar a matriz da forma que ela foi informada
cout << "\n\nValores na matriz\n" << endl;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
cout << setw(5) << matriz[i][j];
}
cout << "\n" << endl;
}
// vamos calcular a soma dos elementos da diagonal secundária
int ordem = 3; // ordem da matriz
for(int i = 1; i <= 3; i++){
for(int j = 1; j <= 3; j++){
if((i + j) == (ordem + 1)){
soma_diagonal = soma_diagonal + matriz[i - 1][j - 1];
}
}
}
cout << "A soma dos elementos da diagonal secundaria e: " <<
soma_diagonal << endl;
cout << "\n" << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
|
C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função concat() que reproduz a funcionalidade da função strcat() da linguagem CQuantidade de visualizações: 11869 vezes |
O C (C99, ANSI C) contém uma função strcat(), no header string.h, que permite concatenar duas strings. Para fins de estudo, segue abaixo o código completo para uma função concat(), que recebe duas strings, anexa a segunda à primeira e retorna um ponteiro para uma string contendo ambas:----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// uma função concat
char *concat(char *destino, const char *origem)
{
// um ponteiro para a string de destino
char *original = destino;
// vai para o final da string de destino
while(*original)
original++;
// anexa a string de origem
while(*original++ = *origem++)
;
// retorna o resultado
return destino;
}
Veja como usar no trecho de código abaixo: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
// uma função concat
char *concat(char *destino, const char *origem)
{
// um ponteiro para a string de destino
char *original = destino;
// vai para o final da string de destino
while(*original)
original++;
// anexa a string de origem
while(*original++ = *origem++)
;
// retorna o resultado
return destino;
}
int main(int argc, char *argv[])
{
char frase1[100] = "Gosto";
char frase2[20] = " muito de C e Java.";
char *resultado = concat(frase1, frase2);
// exibe o resultado
printf("%s", resultado);
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: Gosto muito de C e Java. |
Nossas 20 dicas & truques de programação mais populares |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Como calcular a transposta de uma matriz em Java - Java para Geometria Analítica e Álgebra Linear Delphi - Como habilitar ou desabilitar um TEdit do Delphi usando a função EnableWindow() da API do Windows JavaScript - Como usar objetos Set em seus códigos JavaScript |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







