CLP - Guide to Automated Subkects

Documentos relacionados
Orientação a Objetos - Programação em C++

TUTORIAL PARA FORMATAÇÃO DE DOCUMENTO

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

Aula 4 Microsoft PowerPoint 2003: Criando uma Apresentação

Tutorial: Programação do CLP Siemens S Ambiente do software TIA Portal V11 da Siemens

Executar uma macro clicando em um botão da Barra de Ferramentas de Acesso Rápido

Módulo 5. Microsoft Office Power Point 2007 Projeto Unifap Digital

Dreamweaver CS5 -5- CAPÍTULO 1... Iniciando e conhecendo o dreamweaver...8 Interfaces...23 Criando e confi gurando sites...24 Exercícios...

Tutorial de Utilização do Software- Mini CLP FIT

No Windows há basicamente dois tipos de programas de usuário:

Listas Lineares Ordenadas

Tutorial de Utilização do Software- Mini CLP FIT. tsfit-03 CRIANDO UM PROGRAMA

Roteiro de Construção de Gráficos Análise de Experimentos Virtuais

Sobre o Visual C

AULA 2 Planos Vistas e Temas

Schaeffler Online. Manual de Operação

TUTORIAL UTILIZAÇÃO XOOPS UEFS. AEI - Gerência de Suporte

Pimenta Advocacia Sistema Online Departamento de Informática. Spark MANUAL DO USUÁRIO

Selecione o WPF Application dentro de Templates > Visual C# > Windows

O JasperReports Studio é uma ferramenta de software que oferece um ambiente visual para criar relatórios para a plataforma Java. É open source.

Pedido de Compra. Procedimentos para consultar e inserir um pedido de compra no SISGEM.

Gestão Unificada de Recursos Institucionais GURI

Prof. Paulo Borges. ao lado do campo Proprietário, clique no botão Novo e preencha os dados, conforme tela abaixo, em seguida clique em Salvar e OK.

BAIXA E INSTALAÇÃO DO CERTIFICADO DIGITAL. A3 em token

Roteiro do 3º Experimento: Programação do CLP Siemens S7-1200

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA APRESENTAÇÃO ELETRÔNICA POWER POINT (CONTINUAÇÃO)

TUTORIAL DO BLOG IMES-CATANDUVA Profº M. Sc. Marcelo Mazetto Moala Profº Esp. Antonio Marcio Paschoal

Material de Apoio 3. Criando um novo projeto em BlueJ Lance a execução do BlueJ. A janela que deverá aparecer é a seguinte:

Execute o instalador atiecli5 clicando duas vezes sobre o mesmo e será apresentada a tela inicial:

Atalho de teclado CTRL + P

Instalação e Atualização do Comércio-plus. Baixando o Arquivo de Instalação

INSTRUÇÕES PARA REGISTRO DE DI (DECLARAÇÃO DE IMPORTAÇÃO)

Introdução a Tecnologia da Informação

S40. Primeiros Passos. DAELT - Profa. Mariana Antonia Aguiar Furucho e Prof. José da Silva Maia 1

Cartões Jogo de Pega-pega

A configuração é bem simples e é feita através de um painel onde cada gesto é associado a um comando do NetBeans.

Inserindo Quebra de Página

Aula Teórica: Elaboração de gráficos com o Excel

PLANILHA ELETRÔNICA EXCEL

TOPCON SCANMASTER GUIA PRÁTICO REGISTRO DE NUVENS POR TIE POINTS

COMPUTAÇÃO GRÁFICA II E III. Posicionamento e edição de módulos

Formulário Principal no NetBeans

Manual do usuário. Protrader Web Desktop

Introdução à Engenharia ENG1000

Atividade 19: Espiral Logarítmica Objetivo: Apresentar o comando Curva.

Guia e Utilização do Visual Studio.NET 2003

APRESENTAÇÃO ELETRÔNICA POWER POINT

Ajuste de Estoque. Para realizar o ajuste do estoque proceda da seguinte forma:

INFORMÁTICA APLICADA AULA 05 WINDOWS XP

Microsoft Word 2010 NORMA ABNT para Trabalhos Acadêmicos Conceitos Básicos

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Tutorial 133 DUO Criação de telas e utilização do teclado

Vejamos agora as ferramentas mais utilizadas para criação de imagens:

Tutorial TerraView 3.0 PLUS

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Como usar o bluej. Laboratório I Prof.ª Vera Alves

Capítulo 11. GRÁFICOS COM WGNUPLOT

Manual de acesso. a rede cabeada UFPR. UFPR aspec

Questionário de revisão para AV1 de Informática Aplicada Valor 1,0 ponto - Deverá ser entregue no dia da prova.

AULA 12 ESTRUTURA DE DADOS

Crystal Reports - Gerando seus relatórios.

Produtividade é resultado do esforço inteligente

Laboratório de Programação II

MANUAL DE PUBLICAÇÃO NO PORTAL CAMPUS MATÃO

GUIA Assinaturas de

5.9 Mídias: Clique no botão de Gerenciador de Mídias, ou acesse o Menu Conteúdo => Gerenciador de Mídias.

Curso de automação industrial utilizando o CLP Haiwell

Como criar um menu pop-up no Dreamweaver

Método dos Elementos Finitos Aplicado à Engenharia de Estruturas Página 1

FAQ Perguntas Frequentes

Como criar o seu Servidor Metatrader5 na Nuvem (cloud) da Amazon

Capítulo 1... Iniciando o Word Conhecendo a tela do word...10 Exercício...14

Criando Mensagens - Editor Drag and Drop

ATUALIZANDO O MIKROTIK VIA CABO SERIAL

Entendendo as janelas do Windows Uma janela é uma área retangular exibida na tela onde os programas são executados.

1. Introdução O que fazer primeiro? Cadastro de produtos e serviços Cadastro de status da proposta 5

O PowerPoint é um programa componente da suíte Office da Microsoft.

TUTORIAL FGV WIKI Professor

1. Introdução O que é Microsoft PowerPoint Recursos de PowerPoint. Introdução

CURSO DE ACCESS AULA 3 FORMULÁRIOS. Cartão de Referência Rápida Um formulário para cada função

LibreOffice versão O essencial para sua prova WRITER. O único lugar em que o sucesso vem antes do trabalho é no dicionário.

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

PROGRAMAÇÃO ORIENTADA A OBJETOS I. Prof. Me. Hélio Esperidião

EBRcart2 digital cart machine

Universidade Federal de Minas Gerais Escola de Engenharia

Trabalho de Programação 2 Processador CESAR

1 - Ambiente de desenvolvimento

Transcrição:

OpenStax-CNX module: m16797 1 CLP - Guide to Automated Subkects leandro alencar This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License 2.0 Código ladder para um programa simples Aula 8 AppWizard 1. Introdução Abstract Nas aulas anteriores, todos os programas exemplo foram construídos a partir do zero, cada linha de código teve que ser inserida pelo programador. A partir desta aula, os programas exemplo serão gerados a partir de um programa esqueleto gerado pelo AppWizard. 1. Criando um Programa com o Appwizard A sequência de guras a seguir ilustra a criação de um programa utilizando o AppWizard do Visual C++ 6.0. Selecione New no menu principal. Depois selecione MFCAppWizard(exe), de um nome para o projeto e pressione OK. Version 1.1: Jun 20, 2008 10:48 pm +0000 http://creativecommons.org/licenses/by/2.0/

OpenStax-CNX module: m16797 2 Figure 1 Na janela MFC AppWizard Step 1, selecione Single Document e desmarque a opção Document/View architecture.

OpenStax-CNX module: m16797 3 Figure 2 Em MFC AppWizard Step 2, selecione None.

OpenStax-CNX module: m16797 4 Figure 3 Da janela Step 3 até a Step 6 mantenha os defaults. Figure 4 Figure 5 Figure 6

OpenStax-CNX module: m16797 5 Figure 7 Na janela Step 6, pressione Finish e o AppWizard fornecerá uma lista de informações sobre o novo projeto que será gerado. Os arquivos serão gerados quando você pressionar OK. Figure 8 O Programa Gerado Os arquivos gerados são mostrados na janela Workspace.

OpenStax-CNX module: m16797 6 Figure 9 Compile e execute o programa. O resultado deve ser parecido com o mostrado abaixo.

OpenStax-CNX module: m16797 7 Figure 10 IMPORTANTE: O AppWizard utiliza comentários especiais para identicar partes do código gerado. Por exemplo: //{{AFX_MSG_MAP(CChildView) ON_WM_PAINT() //}}AFX_MSG_MAP Não modique nenhuma linha entre esses comentários. 1. Entendendo o Código Gerado pelo AppWizard Esta seção visa explicar as principais funções presentes no código gerado pelo AppWizard. Para melhor entendimento, sugere-se que o leitor acompanhe as explicações com o código do programa aberto no Microsoft Visual C++. Estrutura da janela A janela do programa gerado é, na verdade, constituída de duas janelas: uma janela principal associada à classe CMainFrame e uma janela ( lha da principal ) associada à classe CChildView. A gura seguinte ilustra essa estrutura.

OpenStax-CNX module: m16797 8 Figure 11 O menu, a barra de ferramentas e a barra de status não são janelas, eles são itens que pertencem à janela principal e serão estudados nas próximas aulas. Como indicado pela gura anterior, a janela CChildView ocupa toda a região vazia da janela CMain- Frame. Estrutura do Programa As principais tarefas realizadas pelo código de um programa gerado pelo AppWizard podem ser resumidas nas seguintes etapas: Criação da janela CMainFrame; Criação do menu e das barras de status e de ferramentas, quando for o caso; Criação da janela CChildView; Estabelecimento da comunicação entre o usuário e a janela lha. Criação da janela CMainFrame O processo de criação da janela principal começa, como nos programas das aulas anteriores, na função InitInstance() da classe da aplicação ( CXxxApp para o caso do programa gerado na seção 2 desta aula ): CMainFrame* pframe = new CMainFrame; m_pmainwnd = pframe; Antes da janela ser realmente criada, a função CMainFrame::PreCreateWindow() é chamada. No programa gerado anteriormente, o código dessa função é: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {

OpenStax-CNX module: m16797 9 if(!cframewnd::precreatewindow(cs) )return FALSE; cs.dwexstyle &= WS_EX_CLIENTEDGE; cs.lpszclass = AfxRegisterWndClass(0); return TRUE; } O parâmetro que essa função recebe é uma estrutura que nos permite especicar várias características da janela. Os campos dessa estrutura são: typedef struct tagcreatestruct { LPVOIDlpCreateParams; HANDLEhInstance; HMENUhMenu; HWNDhWndParent; intcy;//altura da janela intcx;//largura da janela inty;//posição y da janela intx;//posição x da janela LONGstyle; LPCSTRlpszName;//nome na barra de título LPCSTRlpszClass; DWORDdwExStyle;//20 estilos WS_EX_style } O campo lpszclass é um ponteiro para o nome de uma classe registrada de janelas. Quando fazemos lpszclass = AfxRegisterWndClass(0); a classe com as opções by default é utilizada. Se desejarmos alterar características como: cor de fundo, cursor do mouse ou ícone da janela, devemos utilizar a função AfxRegisterWndClass() com parâmetros especícos (consulte o Help). Observação: A cor de fundo e o cursor que o usuário verá serão os determinados na criação da janela CChildView. Após denidas as características da janela, o construtor da classe base cria a janela principal. Criação do Menu, Barra de Status e Barra de Ferramentas Antes da janela principal tornar-se visível, a estrutura MFC envia para a classe CMainFrame a mensagem WM_CREATE que, por sua vez, é tratada pela função OnCreate(). O menu, a barra de status e a barra de ferramentas são criados nessa função. Criação da janela CChildView No arquivo de cabeçalho da classe CMainFrame encontra-se a seguinte declaração: protected: CChildView m_wndview; Portanto, a janela CChildView é representada dentro da classe CMainFrame pela variável m_wndview. O processo de criação da janela lha tem início na função CMainFrame::OnCreate(), como no código seguinte: m_wndview.create(null, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, // janela principal AFX_IDW_PANE_FIRST, NULL); Note que o tamanho da janela não é importante, porque o tamanho da janela lha ajusta-se ao da janela principal. O parent da janela CChildView é especicado por this, que é um ponteiro para o objeto CMain- Frame.

OpenStax-CNX module: m16797 10 Antes da janela lha ser realmente criada, a função CChildView::PreCreateWindow() é chamada. Como na criação da janela principal, essa função é utilizada para determinar algumas características da janela. As únicas características importantes são a cor de fundo da janela e o cursor padrão do mouse. As outras características - como título, tamanho e ícone - são determinadas pela janela principal. Estabelecimento da Comunicação entre o Usuário e CChildView Observe o código da função abaixo: void CMainFrame::OnSetFocus(CWnd* poldwnd) { // forward focus to the view window m_wndview.setfocus(); } Essa função é chamada quando a janela principal recebe o foco do sistema operacional. Para que a janela CChildView responda à mensagens referentes ao acionamento das teclas do teclado, é necessário passar o foco da janela principal para a janela lha. As mensagens do sistema operacional são enviadas para a janela principal. Para que essas mensagens cheguem à janela CChildView, a janela principal deve repassá-las à janela lha. Isso é feito pela seguinte função: BOOL CMainFrame::OnCmdMsg(UINT nid, int ncode, void* pextra, AFX_CMDHANDLERINFO* phandlerinfo) { // let the view have rst crack at the command if (m_wndview.oncmdmsg(nid, ncode, pextra, phandlerinfo)) return TRUE; // otherwise, do default handling return CFrameWnd::OnCmdMsg(nID, ncode, pextra, phandlerinfo); } Note que uma mensagem só será tratada pela janela principal se não for tratada pela janela lha. Message Map e Tratamento de Mensagens O tratamento das mensagens recebidas pela janela CChildView se dá da mesma forma que em qualquer outra janela: através do Message Map. No código do programa gerado na seção 2, a única mensagem tratada explicitamente é a WM_PAINT e, por isso, o mapa de mensagens da classe CChildView é: BEGIN_MESSAGE_MAP(CChildView,CWnd ) //{{AFX_MSG_MAP(CChildView) ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP() Para tratar outras mensagens basta inserir as linhas correspondentes no MESSAGE_MAP e escrever o código das funções relacionadas. Isso pode ser feito de duas maneiras: inserindo linhas abaixo do comentário //}}AFX_MSG_MAP ou utilizando o ClassWizard. AssertValid() e Dump() Essas funções existem por motivos de diagnóstico e checagem de erros. 1. Exercício Modique o programa gerado na seção 2 da seguinte forma:

OpenStax-CNX module: m16797 11 Faça com que o menu, a barra de status e a barra de ferramentas não apareçam na janela do programa; Modique a cor de fundo da janela e o cursor padrão do mouse; Trate as mensagens WM_LBUTTONDOWN e WM_LBUTTONUP para desenhar uma reta entre os pontos em que o usuário pressionar e soltar o botão esquerdo do mouse; Dicas: O menu é criado na função InitInstance() e as barras de status e de ferramentas na função OnCreate(); Utilize as funções ::LoadCursor() e ::CreateSolidBrush() para alterar os parâmetros passados à função AfxRegisterWndClass(); Lembre-se de chamar a função Invalidate() quando quiser que a janela seja atualizada.