最简单的MFC

#include <SDKDDKVer.h>
#include <afxwin.h>         
#include <afxext.h>        
#include <iostream>
#include <sstream>

class MyFrameWnd : public CFrameWnd
{
public:
	MyFrameWnd()
		:CFrameWnd()
	{
		Create(0, TEXT("Hello"));
		
		m_Menu.CreateMenu();
		
		m_Menu.AppendMenu(MF_STRING, 0, _T("文件"));
		
		SetMenu(&m_Menu);
	}
protected:
	void OnPaint()
	{
		CPaintDC dc(this);
		dc.MoveTo(0, 0);
		dc.LineTo(200, 200);
	}

	void OnLButtonDown(UINT flag, CPoint point)
	{
		std::stringstream ss;
		ss << point.x << "," << point.y << "\n";
		::OutputDebugStringA(ss.str().c_str());
	}



	static const AFX_MSGMAP* PASCAL GetThisMessageMap()
	{
		typedef MyFrameWnd ThisClass;						   
		typedef CFrameWnd TheBaseClass;
		static const AFX_MSGMAP_ENTRY _messageEntries[] =  
		{
			{ WM_PAINT, 0, 0, 0, AfxSig_vv, (AFX_PMSG)(AFX_PMSGW)(static_cast< void (AFX_MSG_CALL CWnd::*)(void) > ( &ThisClass :: OnPaint)) },
			
			{ WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, (AFX_PMSG)(AFX_PMSGW)(static_cast< void (AFX_MSG_CALL CWnd::*)(UINT, CPoint) > (&ThisClass :: OnLButtonDown)) },
			{0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }
		};

		static const AFX_MSGMAP messageMap = 
		{ &TheBaseClass::GetThisMessageMap, &_messageEntries[0] }; 

		return &messageMap;
	}

	virtual const AFX_MSGMAP* GetMessageMap() const
	{
		return GetThisMessageMap();
	}
private:
	CMenu  m_Menu;
};



class MyApp : public CWinApp
{
public:
	MyApp()
		:CWinApp()
	{

	}

	~MyApp()
	{

	}

	BOOL InitInstance()
	{
		CWinApp::InitInstance();
		MyFrameWnd * frame = new MyFrameWnd;
		m_pMainWnd =  frame;
		m_pMainWnd->ShowWindow(m_nCmdShow);
		m_pMainWnd->UpdateWindow();
		return true;
	}

};

MyApp theApp;

 

posted @ 2016-09-14 22:47  20118281131  阅读(275)  评论(0编辑  收藏  举报