屏幕截图小软件的编写——WINDOWS API

本文介绍了使用Windows API编程来编写屏幕截图小软件的过程,包括如何捕获屏幕、选定区域以及将图片写入剪贴板。在实现过程中,作者探讨了选择区域的处理细节,并分享了主要代码,特别关注窗口回调函数中的核心逻辑。文章提到了DC的概念以及SelectObject函数的应用。
摘要由CSDN通过智能技术生成

近期在学习windows api编程,完全模仿的学习了,熟悉windows api和纯windows api编程

屏幕截图步骤:

1.如何捕获屏幕

2.捕获屏幕后怎么做到选定区域

3.选定区域后将图片写入剪贴板

具体还有很多细节需要考虑,如选定区域需要用不同颜色的画笔,如何知道区域被选择了......

主要代码如下,核心都在窗口回调函数中,不详细解释,几个重要的API函数在后面说明

//函数前置声明
void CaptureScreen();
void WriteDateToClipBoard();
// 全局变量: 
HINSTANCE hInst;                                // 当前实例
WCHAR szTitle[MAX_LOADSTRING];                  // 标题栏文本
WCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名

int screenW, screenH;
HDC g_memDC;					//全局内存DC,存储位图
RECT rect;						//截图矩形区域
bool isSelect=FALSE, isDrawing=FALSE;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;

	//画刷
	LOGBRUSH brush;
	brush.lbStyle = BS_NULL;
	HBRUSH hBrush = CreateBrushIndirect(&brush);
	//画笔
	LOGPEN pen;
	POINT penWidth;
	penWidth.x = 2;
	penWidth.y = 2;
	pen.lopnColor = 0x0000FFFF;
	pen.lopnStyle = BS_SOLID;
	pen.lopnWidth = penWidth;
	HPEN hPen = CreatePenIndirect(&pen);

	//窗口信息
	WINDOWINFO windowInfo;
	windowInfo.cbSize = sizeof(WINDOWINFO);
	

    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 分析菜单选择: 
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
          
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值