Elemar DEV

Tecnologia e desenvolvimento

MouseDown! MouseMove! usando MFC

Olá pessoal. Tudo certo?!

No post anterior, mostrei como funciona a manipulação do mouse usando apenas a API nativa do Windows. Agora, repito o exemplo usando MFC.

Eis o código completo:

#include <afxwin.h>

class CMouseDemoApp :
	public CWinApp
{
public:
	virtual BOOL InitInstance();
};

class CMainWindow :
	public CFrameWnd
{
	CPoint m_mouseDownPosition;

public:
	CMainWindow();

protected:
	afx_msg void OnLButtonDown(UINT, CPoint);
	afx_msg void OnRButtonDown(UINT, CPoint);
	afx_msg void OnMouseMove(UINT, CPoint);
	DECLARE_MESSAGE_MAP();
};

BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
    ON_WM_LBUTTONDOWN ()
    ON_WM_RBUTTONDOWN ()
	ON_WM_MOUSEMOVE ()
END_MESSAGE_MAP ()


BOOL CMouseDemoApp::InitInstance() {
	m_pMainWnd = new CMainWindow();
	m_pMainWnd->ShowWindow(m_nCmdShow);
	return TRUE;
}

CMainWindow::CMainWindow()
{
	Create(0, L"The Hello Mouse Native Programming Sample (using MFC)");
}

void CMainWindow::OnLButtonDown(UINT flags, CPoint point)
{
	m_mouseDownPosition = point;
}

void CMainWindow::OnMouseMove(UINT flags, CPoint point)
{
	if (! (flags & MK_LBUTTON)) return;

	CClientDC dc(this);
	dc.MoveTo(m_mouseDownPosition.x, m_mouseDownPosition.y);
	dc.LineTo(point.x, point.y);
}

void CMainWindow::OnRButtonDown(UINT flags, CPoint point)
{
	InvalidateRect(NULL, TRUE);
}

CMouseDemoApp theApp;

Como podem ver, MFC torna o desenvolvimento para Windows mais simples (comparado, pelo menos, a API nativa).

Era isso.

6 comentários em “MouseDown! MouseMove! usando MFC

  1. Olá Elemar,

    É uma pena que a Microsoft não evoluiu com desenvolvimento em C++ nativo para desktop. Porque não criar um framework de UI baseado em XAML para desktop assim como existe no ambiente moderno?

    Infelizmente a opção atual (considerando Microsoft) continua sendo MFC.

    Abraços.

    • elemarjr
      24/03/2013

      O problema, penso eu, estaria na necessidade de reproduzir um WPF-like para ambiente nativo. Não que seja impossível, mas demandaria um bom custo.

      A Microsoft parece estar investindo cada vez mais no ambiente moderno. É, até então, uma decisão racional. Não acha?

      • Elemar,

        Na minha opinião (posso estar completamente errado) o “ambiente moderno” só faz sentido para tablets. Não funciona para desktop.

        Alguns aplicativos não fazem sentido no ambiente moderno. É o caso do Office, que claramente parece ser desenvolvido em MFC.

        De qualquer forma, acho que a Microsoft poderia investir nos dois ambientes.

        Abraços e parabéns pelos posts.

    • alexsandro_xpt
      24/03/2013

      Apesar do que voce disse, eu vejo muitos app feito em VC++ com interfaces muito ricas, entao não acho ruim ela por ter parado no MFC.

      Por exemplo, eu desconfio fortemente que o Google Chrome é todo desenvolvido em C++ se não no compilador do VC++. Eu desconfio disto porque eu percebo que eles “raqueram” o OS para conseguir fazer um app tao leve.

      Tem fundamento sobre Chrome ser feito em C++, Elemar?

      • elemarjr
        24/03/2013

        Alexsandro,

        Atravessamos um pouco o conteúdo. Para começar, sim “majoritariamente” o Chorme é feito em C++, isso pode ser conferido na página do projeto Chromium (http://www.chromium.org/Home).

        A observação do Ari não está relacionada ao potencial do C++. No lugar disso, o questionamento dele é por alternativas mais simples para o desenvolvimento de interfaces. Veja, para desenvolver aplicações modernas (para o novo ambiente do Windows 8), há a possibilidade de utilizar XAML.

        Para soluções Desktop, soluções genuinamente Windows podem ser desenvolvidas consumindo diretamente a API, ou através de um framework como o MFC.

        O MFC é a alternativa mais “simples” fornecida pela Microsoft para construção de aplicações Windows. Entretanto, tem design antigo que parece não ter se adaptado bem as mudanças do tempo.

  2. Hello Nice wewebsite. Would you like to guest publish upabout mine someday? If so please tell me by means of e-mail or simply reply to this particular remark because We signed up for announcements and can realize should you choose.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às 23/03/2013 por em Post e marcado , .

Estatísticas

  • 626,784 hits
%d blogueiros gostam disto: