MFC SDI 利用双缓冲实现截图程序
来源:互联网 发布:nginx upstream 详解 编辑:程序博客网 时间:2024/06/05 18:57
废话不多说先上图
-------------------------------------------好了 开始废话
编译器: VC6.0
MSDN: 2008
程序功能:主要功能如图中菜单所示 且每个功能的实现代码基本一样
仅仅将显示器能显示的部分 截取下来 然后绘制到视图中(并没有将截取的图片保存成硬盘中!)
-------------------------------------------本程序实现步骤
1. 建立MFC 单文档(SDI)程序 CGetWndBmp 注释掉工具栏 删除不需要的菜单(清晰 简单)
2. 在视图类 CCGetWndBmpView OnPaint()消息中为程序添加一张背景图片
由于图片覆盖了客户区的整个部分 也为了运行效率 重载函数OnEraseBkgnd()
(同样可以将OnPaint()函数中贴图的代码放到 OnEraseBkgnd() 函数中来!!)
3. 添加菜单及其消息响应函数 函数名字一看便知道 [ 点击|菜单|得到|整个/半个| 屏幕/视图 ]
afx_msg void OnMenuGetFullScreen();
afx_msg void OnMenuGetFullView();
afx_msg void OnMenuGetHalfScreen();
afx_msg void OnMenuGetHalfView();
afx_msg void OnMenuGetFullDesktop();
afx_msg void OnMenuGetDialogCtrl();
4. 我再啰嗦一句,这几个功能的实现代码基本是一样的,有些仅仅是变动了几个参数
我没有提取出来单独作为一个函数,是想大家看的清晰一点,实现一个截取的功能 不用太复杂
看懂下面第一个未折叠的代码 基本就能举一反百了
//得到整个屏幕
A: void CMainFrame::OnMenuGetFullScreen()
B: 得到半个屏幕大小的图片
void CMainFrame::OnMenuGetHalfScreen()
C: 得到整个视图大小的图片
void CMainFrame::OnMenuGetFullView()
D: 得到半个试图大小的图片
void CMainFrame::OnMenuGetHalfView()
E: 得到桌面大小的图片
void CMainFrame::OnMenuGetFullDesktop()
#define TIMER_ID_GET_DIALOG (1) 定时器ID
#define TIMER_ID_GET_CTRL (2) 定时器ID
#define DIALOG_WINDOW_POS_XY (400) 弹出窗口位置
F:
得到弹出对话框大小的图片
设置定时器截图
得到对话框中某一控件大小的图片
OnMenuGetDialog()
OnTimer()
OnMenuGetDialogCtrl()
-------------------------------------------
程序源代码: http://download.csdn.net/source/3326623
.
.
.
- MFC SDI 利用双缓冲实现截图程序
- MFC 双缓冲实现
- 在 MFC SDI 程序中实现多语言程序界面
- MFC利用双缓冲实现屏幕无闪烁刷新
- MFC利用双缓冲实现屏幕无闪烁刷新
- 如何在MFC的SDI程序中实现多视图
- 如何在MFC的SDI程序中实现多视图
- MFC单文档(SDI)全屏程序实现方法
- 如何在MFC的SDI程序中实现多视图
- MFC截图程序的实现(一)
- MFC截图程序的实现(二)
- MFC截图程序的实现(三)
- MFC截图程序的实现(四)
- MFC截图程序的实现(五)
- MFC截图程序的实现(六)
- MFC截图程序的实现(七)
- MFC截图程序的实现(八)
- MFC截图程序的实现(九)
- 使用Session在JSP页面间传递表单内容
- qsort用法总结
- 几种支持REST的Java框架
- COM与.NET交互简单示例--追忆VB6
- 程序十一
- MFC SDI 利用双缓冲实现截图程序
- 查询及删除重复记录的方法大全
- linux中VI的用法
- 六一儿童节的礼物:基于GB18030-2000汉字拼音类库(C++)
- 游戏数据同步
- QTimer全解
- 数据库范式设计
- 人物传奇:操作系统“天神”David Cutler
- flying saucer