废话不多说先上图
-------------------------------------------好了 开始废话
编译器: 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
.
.
.