在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
来源:互联网 发布:直筒和滚筒洗衣机 知乎 编辑:程序博客网 时间:2024/06/05 22:53
之前我也写了一篇用滚动窗口类显示图片的博客:
http://blog.csdn.net/zhoujielunzhimi/article/details/7899735
本文与之不同,上面的这个滚动窗口具有通用性,比如滚动窗口可以装载控件,但是比较繁琐的是滚动参数需要自己去控制。
下面要介绍的是利用WTL的类CScrollWindowImpl来完成,这个类只是用来显示图片,对于控件暂不知(个人觉得不支持)。
#pragma once#include "stdafx.h"#include <atlscrl.h>class BmpView : public CScrollWindowImpl<BmpView>{protected:BEGIN_MSG_MAP(BmpView)CHAIN_MSG_MAP(CScrollWindowImpl<BmpView>)MSG_WM_ERASEBKGND(OnEraseBkgnd)END_MSG_MAP()public:BOOL OnEraseBkgnd(CDCHandle){return TRUE;}void DoPaint(CDCHandle dc){RECT rc = { 0,0,m_sizeAll.cx,m_sizeAll.cy };if(bmp.IsNull()){CBrush br;br.CreateSolidBrush(RGB(215,240,215));dc.FillRect(&rc,br);}else{CDC mem;mem.CreateCompatibleDC(dc);CBitmap old = mem.SelectBitmap(bmp);dc.BitBlt(0,0,rc.right,rc.bottom,mem,0,0,SRCCOPY);mem.SelectBitmap(old);}}void SetBmp(HBITMAP bit){bmp = bit;SIZE sz;bmp.GetSize(sz);SetScrollSize((int)sz.cx,(int)sz.cy);}private:CBitmapHandle bmp;};class CMainDlg : public CDialogImpl<CMainDlg>{protected:BEGIN_MSG_MAP(CMainDlg)MSG_WM_INITDIALOG(OnInitDialog)MSG_WM_CLOSE(OnClose)MSG_WM_GETMINMAXINFO(OnMinMaxInfo)//限制窗口的大小MSG_WM_SIZE(OnSize)END_MSG_MAP()public:BOOL OnInitDialog(CWindow,LPARAM){CenterWindow();CIcon icon;icon.LoadIcon(IDI_ICON_NTES);SetIcon(icon,TRUE);SetIcon(icon,FALSE);CRect rc;GetClientRect(&rc);bv.Create(m_hWnd,rc,NULL,WS_CHILD|WS_VISIBLE);bmp.LoadBitmap(IDB_BMP_ANGLE);bv.SetBmp(bmp.m_hBitmap);return TRUE;}void OnClose(){EndDialog(0);}void OnMinMaxInfo(LPMINMAXINFO lp){lp->ptMinTrackSize = CPoint(300,300);}void OnSize(UINT,CSize sz){bv.MoveWindow(0,0,sz.cx,sz.cy);}private:BmpView bv;CBitmap bmp;public:enum { IDD = IDD_MAINDLG };};
效果图如下:
缺点:调整窗口大小时,图片会有闪烁。已经阻止了擦除背景,为什么还会有闪烁呢?
- 在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
- 在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
- WTL:如何利用滚动窗口ScrollWnd查看图片Image
- 窗口中显示bmp图片的过程
- 在对话框中显示bmp图片
- 如何在MFC窗口显示BMP和JPG图片
- 如何在MFC窗口显示BMP和JPG图片
- 如何在MFC窗口显示BMP和JPG图片
- 图片在浏览器窗口中来回滚动
- WTL基础: 显示图片(JPG, BMP, PNG, TIF等)
- WTL基础: 显示图片(JPG, BMP, PNG等)
- 读取BMP图片并显示到窗口.
- 在QT5中搭建SDL2环境以及显示bmp图片
- 如何在数据窗口中显示图片
- 在窗口中显示GIF图片
- 关于WTL中显示图片问题
- 练习9: 在windows MFC窗口中用GDI显示BMP图片
- 如何利用opencv在一个窗口显示多张图片
- 黑马程序员_集合框架(四)
- Extjs4---absolute布局
- Error LNK2019:Unresolved External Symbol *** Referenced In Function ***的解决方案(转)
- 写正确函数需要注意的地方:二叉树非递归中序遍历
- 黑马程序员_IO(一)
- 在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
- linux 2.6.32.2内核移植(MINI2440)步骤
- Shell-xtrabackup script
- java Date 小结
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- dig命令详解
- 2012华为软件机试题 浅析 --------------------C/C++ 西安交大考点
- 人民币为何国际化?
- AWK用法示例 awk命令