Você está aqui: Cards de AutoCAD Civil 3D |
||
|
||
|
|
||
wxWidgets ::: Dicas de Estudo e Anotações ::: Passos Iniciais |
Como baixar, compilar a biblioteca e criar um projeto C++ wxWidgets usando o Visual Studio 2017Quantidade de visualizações: 2552 vezes |
|
O wxWidgets (conhecido anteriormente como wxWindows) é um toolkit para a criação de interfaces gráficas de usuário (UI) multiplataforma. É lançado sob uma licença livre, a wxWindows Library Licence. Lançada em 1992 por Julian Smart, que continua como desenvolvedor, a biblioteca wxWidgets permite que um programa seja compilado e executado em diversas plataformas de computação, com poucas ou nenhuma modificação. Ela suporta sistemas como: Microsoft Windows, Apple Inc. Mac OS, Linux/Unix (para X11). A biblioteca é implementada em C++, mas outras implementações estão disponíveis para várias das linguagens de programação mais comuns, entre elas: Python, Smalltalk, Perl e Java. Fazendo o dowload do código fonte do wxWidgets Agora que você já sabe o que é o wxWidgets, chegou a hora da notícia triste. Compilar e usar esta biblioteca em nossos programas C++ é um pesadelo, principalmente no Windows. Por isso, resolvi compartilhar com todos as minha experiência, já que o entendimento de todos os passos envolvidos me consumiu alguns finais de semana. O primeiro passo é baixar o código fonte (source code) do wxWidgets. Para isso aponte o seu navegador para https://www.wxwidgets.org. Para esta dica eu usei a versão 3.1.3 no Visual Studio 2017. Acredito que outras versões, tanto do wxWidgets quanto do Visual Studio C++ tenham procedimentos parecidos. Vá até a área de downloads e localize o instalador Windows Installer 1.3.1, com o tamanho de 53Mb. Lembre-se que estamos baixando o código fonte da biblioteca, e não os binários já prontos. Finalizado o download, faça a instalação em um diretório sem espaços. Uma boa sugestão é "C:\wxWidgets-3.1.3" Compilando o wxWidgets usando o Visual Studio 2017 Chegou a hora da compilação. Se você ainda não o fez, abra o VS 2017, vá no menu Abrir -> Pasta/Solução e navegue até o diretório C:\wxWidgets-3.1.3\build\msw. Neste diretório você encontrará projetos para as mais diferentes versões do Visual Studio. Como estamos usando o VS 2017, o projeto a ser aberto é wx_vc15.sln. Escolhe logo este arquivo e clique Abrir. Para o processo de compilação nós temos quatro opções: Debug (static), DLL Debug, DLL Release e Release (static). O Debug deixa o executável maior, porque inclui verificações de faixas e outras informações importantes para o desenvolvimento. As versões com DLL são escolhas boas, pois deixa o executável menor e agiliza o processo de compilação. O alvo da CPU pode ser Win32 ou x64, dependendo do seu desejo. Para esta dica eu usei Win32. Agora vamos compilar para estas quatro opções. Escolha a primeira (Debug), defina a CPU alvo e use a opção Compilar Solução. Pode ir buscar um cafezinho porque o processo é um pouco demorado. Faça isso com as outras três opções de compilação. Correu tudo bem? Nada de erros? Vamos continuar então. Criando o seu primeiro projeto wxWidgets para testar sua compilação Em geral, quando terminamos de compilar o wxWidgets, a primeira coisa que fazemos é abrir uma das samples (amostras) que acompanham a biblioteca, tais como a "minimal", no diretório "C:\wxWidgets-3.1.3\samples\minimal". Se você fizer isso agora, verá que esta aplicação (minimal_vc15.sln) é compilada e executada com sucesso. O problema é quando queremos construir nossa aplicação a partir deste template. O simples fato de renomearmos o projeto ou movê-lo desse diretório já trará uma dor de cabeça danada. Então vamos criar nosso próprio projeto. Feche e abra o VS 2017 novamente. Em seguida vá até o menu Arquivo -> Novo -> Projeto -> Projeto Vazio. Dê um nome e um local para este projeto, sempre sem espaços e caracteres especiais. No Gerenciador de Soluções, clique com o botão auxiliar no nó Arquivos de Origem (Source Code) e escolha Adicionar -> Novo Item. Na janela que se abrirá, escolha Arquivo do C++ (.cpp), dê o nome "Main.cpp" e clique Adicionar. Agora copie o código abaixo (retirado do manual do wxWidgets) e cole no arquivo Main.cpp:
// wxWidgets "Hello World" Program
// For compilers that support precompilation,
// includes "wx/wx.h".
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
class MyFrame : public wxFrame
{
public:
MyFrame();
private:
void OnHello(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
};
enum
{
ID_Hello = 1
};
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame();
frame->Show(true);
return true;
}
MyFrame::MyFrame()
: wxFrame(NULL, wxID_ANY, "Hello World")
{
wxMenu *menuFile = new wxMenu;
menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
"Help string shown in status bar for this menu item");
menuFile->AppendSeparator();
menuFile->Append(wxID_EXIT);
wxMenu *menuHelp = new wxMenu;
menuHelp->Append(wxID_ABOUT);
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(menuFile, "&File");
menuBar->Append(menuHelp, "&Help");
SetMenuBar(menuBar);
CreateStatusBar();
SetStatusText("Welcome to wxWidgets!");
Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello);
Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT);
Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT);
}
void MyFrame::OnExit(wxCommandEvent& event)
{
Close(true);
}
void MyFrame::OnAbout(wxCommandEvent& event)
{
wxMessageBox("This is a wxWidgets Hello World example",
"About Hello World", wxOK | wxICON_INFORMATION);
}
void MyFrame::OnHello(wxCommandEvent& event)
{
wxLogMessage("Hello world from wxWidgets!");
}
Assim que você colar esse código, você já verá um monte de erros, várias partes do código sublinhadas de vermelho. Não se desespere que nós vamos corrigir isso agora. Clique com o botão direito no nó do seu projeto e escolha a opção Propriedades. Nessa janela, localize a opção Configuração e selecione Todas as configurações. Plataforma fica à sua escolha, Win32 (x86) ou x64. Na dúvida deixe Win32. Agora vá em C/C++, na aba Geral e localize Diretórios de Inclusão Adicionais. Clique e escolha a opção Editar. Adicione uma nova entrada para o diretório "C:\wxWidgets-3.1.3\include" (sem as aspas). Clique a opção Aplicar. Agora, ainda na opção C/C++, escolha Pré-processador, clique Editar e vamos acrescentar o valor WXUSINGDLL. Clique Aplicar novamente e vamos agora até o Veiculador (Linker). Localize Diretórios de Bibliotecas Adicionais e adicione a entrada "C:\wxWidgets-3.1.3\lib\vc_dll". Clique Aplicar. Agora mude a configuração para Release. Em seguida vá na seção C/C++, localize a opção Diretórios de Inclusão Adicionais e acrescente a entrada "C:\wxWidgets-3.1.3\lib\vc_dll\mswu" (sem aspas). Vá agora no Veiculador (Linker), opção Entrada e informe o valores wxbase31u.lib e wxmsw31u_core.lib para Dependências Adicionais, cada um em uma linha. Vamos repetir a mesma coisa para a configuração Debug. Dessa vez os valores para Dependências Adicionais na opção Entrada do Veiculador serão wxbase31ud.lib e wxmsw31ud_core.lib (cada um em uma linha). Para finalizar, vá em C/C++ e adicione "C:\wxWidgets-3.1.3\lib\vc_dll\mswud" como uma nova entrada para Diretórios de Inclusão Adicionais. Chegou o grande momento Se você seguiu todos os passos atentamente, já está pronto para compilar seu projeto. Dispare a opção Compilar e cruze os dedos. É bem provável que você já veja de cara o erro abaixo: Erro LNK2019 símbolo externo indefinido _main referenciado na função "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) estudos C:\estudos_wxwidgets\estudos\estudos\estudos\MSVCRTD.lib(exe_main.obj) 1 Se isso acontecer, vá de novo até as propriedades do projeto, selecione Todas as Configurações, localize a opção Veiculador (Linker) e depois Sistema. Em SubSystem, troque o valor Console (/SUBSYSTEM:CONSOLE) por Windows (/SUBSYSTEM:WINDOWS). Tente compilar novamente. É provável que você encontre mais um erro, e esperamos que será o último. O programa não pode ser iniciado porque está faltando wxmsw313u_core_vc_custom.dll no seu computador. Tente reinstalá-lo para resolver esse problema. O programa não pode ser iniciado porque está faltando wxbase313u_vc_custom.dll no seu computador. Tente reinstalá-lo para resolver esse problema. Isso aconteceu porque você deve estar compilando em Debug DLL ou Release DLL (o que não é uma má idéia). Para resolver, vá até "C:\wxWidgets-3.1.3\lib\vc_dll" e copie essas duas DLLs para o diretório do seu executável (que deve estar dentro da pasta Debug ou Release) ou para o diretório Windows. A opção de colocar junto ao seu executável é melhor, pois evita o risco de erros caso você tiver versões diferentes do wxWidgets no seu sistema. Abraços e vida longa ao C/C++. |
C# ::: Windows Forms ::: Formulários e Janelas |
C# Windows Forms - Como obter a quantidade de controles em um formulário usando a propriedade Controls.CountQuantidade de visualizações: 8560 vezes |
|
Em algumas situações nós precisamos saber quantos controles existem atualmente em um formulário Windows Forms. Isso pode ser feito com uma chamada à propriedade Count da classe ControlCollection. Um objeto da classe ControlCollection é retornado quando acessamos a propriedade Controls de um formulário (e presente também em outros controles que podem conter controles filhos). Veja um trecho de código no qual obtemos a quantidade de controles em um formulário ao clicarmos em um botão:
private void button1_Click(object sender, EventArgs e){
// vamos obter a quantidade de controles no formulário
int quantControles = this.Controls.Count;
// vamos exibir o resultado
MessageBox.Show("O formulário contém " + quantControles +
" controles.");
}
Note que a coleção ControlCollection retorna apenas os controles visuais no formulário, ou seja, componentes tais como Timer, DirectoryEntry, etc, não são incluídos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Escrever um algoritmo que recebe o salário-base de um funcionário, calcule e mostre o salário a receberQuantidade de visualizações: 9428 vezes |
|
Pergunta/Tarefa: Faça um programa (algoritmo) Java que recebe o salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base. Sua saída deverá ser parecida com: Informe o salário base: 1450.00 Gratificação: R$ 72,50 Imposto: R$ 101,50 Salário final: R$ 1.421,00 Resposta/Solução: Veja a resolução comentada deste exercício usando Java console:
package estudos;
import java.text.NumberFormat;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// vamos fazer a leitura usando a classe Scanner
Scanner entrada = new Scanner(System.in);
// vamos ler o salario base
System.out.print("Informe o salário base: ");
double salario_base = Double.parseDouble(entrada.nextLine());
// vamos calcular a gratificação
double gratificacao = salario_base * (5.0 / 100);
// vamos calcular o imposto
double imposto = salario_base * (7.0 / 100);
// e finalmente calculamos o salário final
double salario_final = salario_base + gratificacao - imposto;
// e exibimos o resultado
NumberFormat formato = NumberFormat.getCurrencyInstance();
System.out.println("Gratificação: " + formato.format(gratificacao));
System.out.println("Imposto: " + formato.format(imposto));
System.out.println("Salário final: " + formato.format(salario_final));
}
}
|
GNU Octave ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em GNU Octave dados dois pontos no plano cartesianoQuantidade de visualizações: 1659 vezes |
|
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: ![]() Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem GNU Octave (script GNU Octave) que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:
# x e y do primeiro ponto
x1 = input("Coordenada x do primeiro ponto: ")
y1 = input("Coordenada y do primeiro ponto: ")
# x e y do segundo ponto
x2 = input("Coordenada x do segundo ponto: ")
y2 = input("Coordenada y do segundo ponto: ")
# agora vamos calcular o coeficiente angular
m = (y2 - y1) / (x2 - x1)
# mostramos o resultado
fprintf("O coeficiente angular é: %f\n\n", m)
Ao executar este código em linguagem GNU Octave nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 3 x1 = 3 Coordenada y do primeiro ponto: 6 y1 = 6 Coordenada x do segundo ponto: 9 x2 = 9 Coordenada y do segundo ponto: 10 y2 = 10 m = 0.6667 O coeficiente angular é: 0.666667 Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):
# x e y do primeiro ponto
x1 = input("Coordenada x do primeiro ponto: ")
y1 = input("Coordenada y do primeiro ponto: ")
# x e y do segundo ponto
x2 = input("Coordenada x do segundo ponto: ")
y2 = input("Coordenada y do segundo ponto: ")
# vamos obter o comprimento do cateto oposto
cateto_oposto = y2 - y1
# e agora o cateto adjascente
cateto_adjascente = x2 - x1
# vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
# (em radianos, não se esqueça)
tetha = atan2(cateto_oposto, cateto_adjascente)
# e finalmente usamos a tangente desse ângulo para calcular
# o coeficiente angular
tangente = tan(tetha)
# mostramos o resultado
fprintf("O coeficiente angular é: %f\n\n", tangente)
Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço do...while em C - Linguagem C para iniciantes: O laço do...whileQuantidade de visualizações: 31911 vezes |
O laço do...while em C é bem parecido com o laço while. A diferença é que no do...while, a condição é testada no final da primeira iteração, o que garante que o laço será executado no mínimo uma vez. Veja um exemplo de seu uso:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int valor = 1;
do{
printf("%d ", valor);
valor++;
}while(valor <= 10);
printf("\n\n");
system("PAUSE");
return 0;
}
|
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






