MFC SDI单文档应用程序贴图

 

 //我们在进行贴图的时候需要将背景擦除  贴图之后我们返回TRUE告诉操作系统已经擦出了背景  如果调用基类的OnEraseBKknd那么
//我们的贴图会被再次擦除就看不到贴图了 
//在对向指定设备拷贝位图之前 我们先要在内存中准备位图 我们创建一个和目的DC兼容的兼容DC 并且将位图选择到 兼容DC然后进行拷贝
//返回TRUE我们不擦背景直接贴 那么不会出现闪烁
/*BOOL CBitBltView::OnEraseBkgnd(CDC* pDC)
{
  
 CDC dcCompatible;  //创建和目的DC兼容的兼容DC
 dcCompatible.CreateCompatibleDC(pDC); //与pDC兼容
 CBitmap bit;  //CBitmap类对象
 bit.LoadBitmap(IDB_BITMAP1); //加载位图资源
    dcCompatible.SelectObject(&bit);  //选择到兼容设备进行内存准备   内存中的位图是 1*1像素
    CRect rect;  //CRect对象
 GetClientRect(&rect);  //获得客户区域大小
 pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);  //拷贝

    return TRUE;
}*/

BOOL CBitBltView::OnEraseBkgnd(CDC* pDC)
{
  
 CDC dcCompatible;  //创建和目的DC兼容的兼容DC
 dcCompatible.CreateCompatibleDC(pDC); //与pDC兼容
 CBitmap bit;  //CBitmap类对象
 bit.LoadBitmap(IDB_BITMAP1); //加载位图资源
 

    BITMAP p;     //BITMAP结构体定义
 bit.GetBitmap(&p);//获得位图的 BITMAP结构体信息
    dcCompatible.SelectObject(&bit);  //选择到兼容设备进行内存准备   内存中的位图是 1*1像素
    CRect rect;  //CRect对象
 GetClientRect(&rect);  //获得客户区域大小
    pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,p.bmWidth,p.bmHeight,SRCCOPY);  //创建位图按照位图的尺寸
    return TRUE;  //表示不擦出背景
}

时间: 2024-09-04 21:39:48

MFC SDI单文档应用程序贴图的相关文章

MFC SDI单文档 状态栏 进度条 启动画面编程技巧 ...

      状态栏的编程离不开  CStatusBar类     CProgressCtrl  进 度条相关的控件      下面我们介绍状态栏 编程技巧  以及在状态栏添加进度条   应用程序的启动界面    状态栏的添加步骤     SDI 单文档中      下面是MFC给的 状态栏的创建步骤      Construct the CStatusBar object.    构造一个 CStatusBar对象    Call the Create (or CreateEx) functio

MFC下 SDI 单文档 对话框 工具栏编程总结 新手值得一看,

  创建工具栏 分2种情况   对话框的工具栏  和 SDI 单文档工具栏编程      用到的函数        RecalcLayout     当窗体布局发生改变的时候  调用这个函数会调用 RePositionBar重新摆放工具条      ShowControlBar   显示隐藏 工具栏的函数     CControlBar是CToolBar的基类      IsWindowVisible  CWnd的函数返回BOOL  检测从CWnd派生的 窗体是否可见      CCmdUI  

MFC单文档应用程序显示图像

1 利用VS2010向导创建一个MFC单文档应用程序MFCTest 2 在MFCTestView.h中引用<atlimage.h>,并创建一个CImage对象 #include <atlimage.h> private: CImage image; 3 打开资源文件,选中Menu下面的IDR_MAINFRAME,添加一个新的菜单项"打开图像",修改其ID为IDM_OPEN,再点击鼠标右键,添加事件处理程序,在弹出的对话框的列表中选择CMFCTestView 4

做一个简单的VC++的mfc单文档应用程序

问题描述 做一个简单的VC++的mfc单文档应用程序 帮忙做一个基于VC++6.0的mfc单文档应用程序(绘图),有菜单栏工具栏和快捷菜单,用到分割窗口,组合框,文档序列化 解决方案 google Scribble 示例:MDI 绘图应用程序 解决方案二: 就你的需求,不要写一行程序,用向导生成,勾选切分视图和从CFormView继承,放上组合框就好了.文档序列化是默认支持的. 解决方案三: 解决方案四: 如果你要画图,可以直接下载msdn里面切分视图画图的那个例子,然后加上一个controlb

SDI单文档视图, 采用基于CFormView的视图, 如何在程序初始化和运行中手动设置mainFrame和View的大小?

问题描述 SDI单文档视图,采用基于CFormView的视图,如何在程序初始化和运行中手动设置mainFrame和View的大小?我在BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){if(!CFrameWnd::PreCreateWindow(cs))returnFALSE;//TODO:在此处通过修改//CREATESTRUCTcs来修改窗口类或样式cs.cx=1280;cs.cy=1024;returnTRUE;}不起作用,显示的大小和对话框

cximage sdi 单文档-CXimage Demo 改为单文档应用程序后,文档类里面的线程,发送消息视类收不到?

问题描述 CXimage Demo 改为单文档应用程序后,文档类里面的线程,发送消息视类收不到? 最近下载了一个CxImage 的Demo源程序,但Demo是基于多文档的,我想把它改成单文档,就先实验了一个功能--向左旋转,但在线程里面发的消息视类没有收到,有没有人知道原因? 我是一个新手,请高手帮忙

mfc单文档-VC++程序调试,出现winocc.cpp中的问题!!!

问题描述 VC++程序调试,出现winocc.cpp中的问题!!! 我自己编写了一个单文档的小程序,然后运行程序之后出现中断,进过调试寻找到是winocc.cpp中的void CWnd::GetProperty和void CWnd::SetProperty两个函数中的_ASSERT(m_pCtrlSite != NULL);均出现错误.希望大神能帮忙指出错误类型!!!谢谢!!! 这是出错部分代码!! float* try::fun1( )//创建指定区域 { GET dlg; dlg.DoMod

MFC单文档应用程序 修改style 光标 图标 背景 等综合

   首先我们修改窗体 有2种方法  一是  在窗体创建之前   二是在窗体创建之后 修改  下面就介绍各种修改方法   参考  MSDN window style    window styles          用到的函数  GetWindowLong  SetWindowLong      GetClassLong   SetClassLong  在窗体创建之后修改窗体的属性 图标光标 等等       AfxRegisterWndClass函数返回一个已经注册的窗口类的名字以便我们给C

解决单文档滚动条程序中显示图像闪烁问题

1.class CPictureProcessView : public CScrollView 如果原来是继承自CView,则把程序中所有的CView替换成CScrollView. 注意,一定要重载 virtual   void   OnInitialUpdate();   否则可能出错.   2.添加内存DC,内存位图成员.   CDC m_MemDC; //内存DC CBitmap m_MemBitmap; //内存位图     3.在打开文件后,要完成内存DC,和位图的初始化,同时设置滚