我想写个截图程序

本文介绍了如何使用VC创建一个截图程序,包括构建基于对话框的程序,设置热键,响应热键实现截图功能,以及保存位图文件的步骤。作者分享了源码并表达了希望简化程序的愿望。
摘要由CSDN通过智能技术生成

手把手VC截图小工具,附源码

一直都想写个截图程序,觉得蛮有意思的。看到网上这位兄弟的思路蛮清晰的,就自己跟着做下,并记录了流程,做个备份。

1.首先是构建个基于对话框的程序。在OnInitDialog中

注册热键,并隐藏当前对话框。在资源里把对话框设为无边框。

BOOL CCutterDlg::OnInitDialog()
{
    RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_ALT,VK_F7);
    RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_ALT,VK_F8);

    ShowWindow(SW_HIDE);
    CDialog::OnInitDialog();
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
在OnDestroy()对热键注销。

void CCutterDlg::OnDestroy()
{
	CDialog::OnDestroy();

	// TODO: 在此处添加消息处理程序代码
	UnregisterHotKey(m_hWnd,1001); 
	UnregisterHotKey(m_hWnd,1002); 
}

在OnPaint要对对话框再做一次隐藏。

	ShowWindow(SW_HIDE);


2.对热键进行声明、关联及响应

	afx_msg LRESULT OnHotKey(WPARAM wp,LPARAM lp);

BEGIN_MESSAGE_MAP(CCutterDlg, CDialog)
...
	ON_MESSAGE(WM_HOTKEY,OnHotKey)
END_MESSAGE_MAP()

LRESULT CCutterDlg::OnHotKey(WPARAM wp,LPARAM lp)//快捷键
{
	if(wp==1001)
	{
		int x=GetSystemMetrics(SM_CXSCREEN);   
		int y=GetSystemMetrics(SM_CYSCREEN);
		CRect cr(CPoint(0,0),CPoint(x,y));
		HBITMAP hb=myGetScreenBmp(cr);	
		ShowDlgS shows(hb);
		shows.DoModal();
	}
	if (wp==1002)
	{
		exit(1);
	}
	return 0;
}

3.热键响应部分,用到了ShowDlgS ,这是一个无边框的对话框。

ShowDlgS.h

#pragma once
// ShowDlgS 对话框

class ShowDlgS : public CDialog
{
	DECLARE_DYNAMIC(ShowDlgS)

public:
	ShowDlgS(CWnd* pParent = NULL);   // 标准构造函数
	ShowDlgS(HBITMAP hb,CWnd* pParent=NULL);

	virtual ~ShowDlgS();

// 对话框数据
	enum { IDD = IDD_DIALOG1 };

protected:
	CBitmap m_bmp;
	HBITMAP m_hBmp;
	CPoint m_ptBegin;
	CPoint m_ptMid;
	CPoint m_ptEnd;
	bool m_bBegin;
	bool m_bEnd;
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonU
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值