首先,上张刚出炉的抓图程序截图。

新建基于对话框MFC窗口程序,在主窗口上摆上控件。

添加资源,新建IDD_DIALOG1并设置属性。



基于控件资源IDD_DIALOG1,新建类CCoverDlg。
#pragma once
#include "atltypes.h"
// CCoverDlg 对话框
class CCoverDlg : public CDialogEx
{
DECLARE_DYNAMIC(CCoverDlg)
public:
CCoverDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CCoverDlg();
// 对话框数据
enum {
IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
CPoint m_pointLButtonDown;
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg LRESULT OnNcHitTest(CPoint point);
int mMouseStates;
};
// CoverDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "CutScreen.h"
#include "CoverDlg.h"
#include "afxdialogex.h"
// CCoverDlg 对话框
IMPLEMENT_DYNAMIC(CCoverDlg, CDialogEx)
CCoverDlg::CCoverDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CCoverDlg::IDD, pParent)
, m_pointLButtonDown(0)
, mMouseStates(0)
{
}
CCoverDlg::~CCoverDlg()
{
}
void CCoverDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CCoverDlg, CDialogEx)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_PAINT()
// ON_WM_NCHITTEST()
// ON_WM_NCLBUTTONDOWN()
ON_WM_NCHITTEST()
// ON_WM_SIZE()
// ON_WM_SIZING()
END_MESSAGE_MAP()
// CCoverDlg 消息处理程序
void CCoverDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
m_pointLButtonDown = point;//记住点击位置
switch (mMouseStates)
{
case HTLEFT:
case HTRIGHT:
::SetCursor(LoadCursor(NULL, IDC_SIZEWE));
break;
case HTTOP:
case HTBOTTOM:
::SetCursor(LoadCursor(NULL, IDC_SIZENS));
break;
case HTTOPLEFT:
case HTBOTTOMRIGHT:
::SetCursor(LoadCursor(NULL, IDC_SIZENWSE));
break;
case HTTOPRIGHT:
case HTBOTTOMLEFT:
::SetCursor(LoadCursor(NULL, IDC_SIZENESW));
break;
default:
::SetCursor(LoadCursor(NULL, IDC_SIZEALL));
break;
}
if (mMouseStates == HTTOP)
PostMessage(WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, MAKELPARAM(point.x, point.y));
else if (mMouseStates == HTBOTTOM)
PostMessage(WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOM, MAKELPARAM(point.x, point.y));
else if (mMouseStates == HTLEFT)
PostMessage(WM_SYSCO

本文介绍了如何在MFC环境下创建一个基于对话框的抓图程序。通过在主窗口上添加控件,并利用资源 IDD_DIALOG1 设计界面。在截图过程中,程序暂时隐藏浮动窗口以捕获桌面图像,然后重新显示窗口。作者承认这种方法存在不足,期待专业人士提供改进意见。
最低0.47元/天 解锁文章
832

被折叠的 条评论
为什么被折叠?



