手写MFC的深入浅出(转)

前言 MFC#define 和 typedefC++弄得面目全非,下面的程序是一个单文档的程序,其功能是创建一个单文档的窗体,当鼠标左键点击窗体时,则在该文档窗体的点击处出现字符串“Welcome to SDI.

#include <afxwin.h>

#include <afxext.h>

#include "resource.h"

 

class mydoc:public CDocument

{

     DECLARE_DYNCREATE(mydoc)  //不知所云,C++没有这个东东,第一讲中介绍

public :

         CString s;

         CPoint point;

         mydoc()

         {

                  s="Welcome to SDI";

                  point.x=250;

                  point.y=100;

         }

};

 

IMPLEMENT_DYNCREATE (mydoc,CDocument) //不知所云,C++没有这个东东,第二讲中介绍

 

class myview:public CView

{

                  DECLARE_DYNCREATE(myview)

public:

         void OnDraw(CDC *d)

         {

                   mydoc *b;

                  b=(mydoc *)m_pDocument;

                  d->SetTextColor(RGB(0,0,0)) ;

                  d->TextOut(b->point.x,b->point.y ,b->s) ;

                  

         }

 

         void OnLButtonDown(UINT nFlags,CPoint p)

         {

                   mydoc *b;

                  b=(mydoc*)m_pDocument;

                  b->point.x=p.x;

                  b->point.y=p.y;

                  Invalidate();

         }

 

         DECLARE_MESSAGE_MAP()

 

};

         IMPLEMENT_DYNCREATE(myview,CView)

 

         BEGIN_MESSAGE_MAP(myview,CView) //不知所云,C++没有这个东东,第三讲中介绍

         ON_WM_LBUTTONDOWN()//不知所云,C++没有这个东东,第三讲中介绍

         END_MESSAGE_MAP()//不知所云,C++没有这个东东,第三讲中介绍

 

class zzz:public CWinApp

{

public:

         int InitInstance()

         {

                  CSingleDocTemplate *y;

                  CRuntimeClass *w,*d,*v;

                  d=RUNTIME_CLASS (mydoc);

                  w=RUNTIME_CLASS(CFrameWnd);

                  v=RUNTIME_CLASS(myview);

                   y=new CSingleDocTemplate(IDR_MENU1,d,w,v);

                  AddDocTemplate(y);

                  OnFileNew();

                   return 1;

         }

};

 

         zzz a;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值