Com a janela workspace na pasta classview pressione o

This preview shows page 54 - 57 out of 155 pages.

Com a janela Workspace na pasta ClassView, pressione o botão direito do mouse sobre a classe Curso3CView, e selecione Add Member Variable , e insira os dois membros de dados. protected: int m_nCor; // guarda cor do preenchimento CRect m_rectElipse; // guarda posição e tamanho da elipse Se preferir pode digitar o código acima dentro da declaração da classe que está no arquivo Curso3CView.h. 3.5.3 Passo3 : Modifique a função OnInitialUpdate criada pelo AppWizard. Edite a função OnInitialUpdate do arquivo Curso3CView.cpp como mostrado abaixo: void CCurso3CView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSize sizeTotal(20000, 30000); // 20 por 30 cm CSize sizePage(sizeTotal.cx / 2, sizeTotal.cy / 2); CSize sizeLine(sizeTotal.cx / 50, sizeTotal.cy / 50); SetScrollSizes(MM_HIMETRIC, sizeTotal, sizePage, sizeLine); } 3.5.4 Passo 4 : Utilize o ClassWizard para mapear a mensagem WM_KEYDOWN. O ClassWizard gera a função membro OnKeyDown, com seu protótipo, entrada no mapa de mensagens e seu esqueleto. Edite seu código como a seguir: void CCurso3CView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { switch (nChar) { case VK_HOME: OnVScroll(SB_TOP, 0, NULL); OnHScroll(SB_LEFT, 0, NULL); break; case VK_END: OnVScroll(SB_BOTTOM, 0, NULL); OnHScroll(SB_RIGHT, 0, NULL); break; case VK_UP: OnVScroll(SB_LINEUP, 0, NULL); break; case VK_DOWN: OnVScroll(SB_LINEDOWN, 0, NULL); break; case VK_PRIOR: OnVScroll(SB_PAGEUP, 0, NULL); break; case VK_NEXT: OnVScroll(SB_PAGEDOWN, 0, NULL); break; case VK_LEFT: OnHScroll(SB_LINELEFT, 0, NULL); break; case VK_RIGHT:
Image of page 54
Curso de Extensão Universitária – Visual C++, Microsoft Foundation Classes – Fundamentos 55 Prof. André Bernardi Capítulo 3 OnHScroll(SB_LINERIGHT, 0, NULL); break; default: break; } } 3.5.5 Passo5: Edite o código do construtor e da função OnDraw em Curso3CView.cpp. O código em destaque a seguir deve substituir o conteúdo previamente existente: CCurso3CView::CCurso3CView() : m_rectElipse(0,0,4000,-4000) { m_nCor = GRAY_BRUSH; } void CCurso3CView::OnDraw(CDC* pDC) { pDC->SelectStockObject(m_nCor); // seleciona objeto do estoque pDC->Ellipse(m_rectElipse); // desenha uma elipse preenchida } 3.5.6 Passo 6 : Utilize o ClassWizard para mapear a mensagem WM_LBUTTONDOWN. As seguintes alterações devem ser feitas na função gerada pelo ClassWizard: void CCurso3CView::OnLButtonDown(UINT nFlags, CPoint point) { CClientDC dc(this); OnPrepareDC(&dc); CRect rectDevice = m_rectElipse; dc.LPtoDP(rectDevice); if (rectDevice.PtInRect(point)) { // se for verdadeiro o ponto pertence ao retângulo. if (m_nCor == GRAY_BRUSH) m_nCor = WHITE_BRUSH; else m_nCor = GRAY_BRUSH; InvalidateRect(rectDevice); } } 3.5.7 Passo 7: Compile e execute o programa Curso3C Selecione Build do menu Build do Developer Studio. Execute o programa Curso3C através da opção Execute Curso3C.exe no menu Build. Pressione o botão esquerdo do mouse dentro do circulo que aparecerá na janela para verificar o resultado de seu programa. Reposicione a janela utilizando as barra de rolamento, e verifique se o hit-test ainda continua funcionando. Verifique se o teclado também pode ser usado para rolar a janela.
Image of page 55
Curso de Extensão Universitária –
Image of page 56

Want to read all 155 pages?

Image of page 57

Want to read all 155 pages?

You've reached the end of your free preview.

Want to read all 155 pages?

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern