首页 IP地址查询 | Alexa排名查询 | 手机归属地查询
设为首页 收藏本站
  • 网络编程网络编程
  • 软件编程软件编程
  • 数据库技术数据库技术
  • 编程学院
  • 业界资讯 业界资讯
  • 源码中心源码中心
  • 会员中心会员中心
  • 页面导航: 首页MFC编程界面&窗口 → 在MDI主框架窗口中添加位图

    在MDI主框架窗口中添加位图

    发布:jeaye 发布日期:2009-05-23 字体:[增加 减小] 类型:原创

    如何在CMDIFrameWnd 窗口中添加自绘图片呢?其实绘图很简单.

    有两种方法:

    第一种就是截取MDICLIENT窗口的消息,不过这种只适合ATL或者WTL程序中控制,要是在MFC中效果不是很好.

    第二种方法就是自定义一个绘图类,来子类化MDICLIENT窗口这样就可以达到效果了.

     

    方法如下:

    1)定义一个类CMDIClient来用于子类化

    #include "atlimage.h"
    class CMDIClient : public CWnd
    {
     DECLARE_DYNAMIC(CMDIClient)
    public:
     CImage m_bmpBack;
    public:
     CMDIClient();
     virtual ~CMDIClient();

    protected:
     DECLARE_MESSAGE_MAP()
    public:
     afx_msg BOOL OnEraseBkgnd(CDC* pDC);      

    };

    //就在这里实现绘图,但一定要return TRUE,否则又被重画掉

    BOOL CMDIClient::OnEraseBkgnd(CDC* pDC)
    {
     pDC->SetStretchBltMode(HALFTONE);
     CRect rect;
     GetClientRect(&rect);
     m_bmpBack.Draw(pDC->m_hDC,rect);

     return TRUE;
     //return CWnd::OnEraseBkgnd(pDC);
    }

     

    2)那么有了这个类,如何子类化,方法如下:

    CMainFrame中定义这个类对象

    class CMainFrame : public CMDIFrameWnd

    {.....

    CMDIClient m_MDIClient;

    ......

    };

    //在创建Frame的时候就子类化

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {

    .........

        //子类化MDIClient窗口,使它使用CMDIClient类来处理数据

       if(m_MDIClient.SubclassWindow(m_hWndMDIClient)==-1)
       {

          TRACE("Fail to subclass MDI client window\n");
          return -1;
       }

    }


    下载源代码
    为配合网络严查,文章评论将关闭敬请谅解.
    同 类 文 章
    最 近 更 新
    热 点 排 行