鱼C论坛

 找回密码
 立即注册
查看: 2990|回复: 1

[技术交流] win32 放大镜 附源码!

[复制链接]
发表于 2016-12-22 19:11:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先上代码
#include <Windows.h>

HWND hParent, hBitMap, hDeskTop;
HDC hMemDC;
HBITMAP hBit;
HMODULE hModule;


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
        WNDCLASS wc;

        static TCHAR* szAppName = TEXT("大灰机");

        HWND hwnd = NULL;

        MSG msg;


        wc.style = CS_HREDRAW | CS_VREDRAW;

        wc.lpfnWndProc = WndProc;

        wc.cbClsExtra = 0;

        wc.cbWndExtra = 0;

        wc.hInstance = hInstance;

        wc.hIcon = LoadIcon(hInstance, IDI_APPLICATION);

        wc.hCursor = LoadCursor(NULL, IDC_ARROW);

        wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

        wc.lpszMenuName = NULL;

        wc.lpszClassName = szAppName;


        if (!RegisterClass(&wc))
        {
                MessageBox(NULL, TEXT("程序只能在WindowsNT下运行"),
                        szAppName, MB_ICONERROR);

                return 0;

        }


        hwnd = CreateWindow(szAppName,

                TEXT("大灰机"),

                WS_OVERLAPPEDWINDOW,

                CW_USEDEFAULT,

                CW_USEDEFAULT,

                200,

                230,

                NULL,

                NULL,

                hInstance,

                NULL);


        ShowWindow(hwnd, iCmdShow);

        UpdateWindow(hwnd);


        while (GetMessage(&msg, NULL, 0, 0))
        {
                TranslateMessage(&msg);

                DispatchMessage(&msg);

        }

        return msg.wParam;

}


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

        RECT rect;

        POINT point;

        HDC hDC, hDeskTopDC, hBitDC;


        switch (message)
        {
        case WM_CREATE:

                hBitMap = CreateWindowEx(0, TEXT("STATIC"),
                        NULL,

                        SS_CENTER | WS_CHILD | WS_VISIBLE,

                        19, 39, 127, 120,

                        hwnd,

                        NULL,

                        hModule,

                        NULL);


                hDeskTop = GetDesktopWindow();


                SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);


                hDeskTopDC = GetDC(hDeskTop);


                hMemDC = CreateCompatibleDC(hDeskTopDC);

                hBit = CreateCompatibleBitmap(hDeskTopDC, 120, 120);

                SelectObject(hMemDC, hBit);


                ReleaseDC(hDeskTop, hDeskTopDC);

                SetTimer(hwnd, 1, 80, NULL);

                return 0;


        case WM_CLOSE:

                DeleteDC(hMemDC);

                DeleteObject(hBit);

                DestroyWindow(hwnd);

                PostQuitMessage(0);

                return 0;


        case WM_TIMER:

                GetCursorPos(&point);

                hDeskTopDC = GetDC(hDeskTop);


                hBitDC = GetDC(hBitMap);

                PatBlt(hMemDC, 0, 0, 120, 120, BLACKNESS);

                StretchBlt(hMemDC, 0, 0, 120, 120, hDeskTopDC, point.x, point.y, 80, 80, SRCCOPY);

                BitBlt(hBitDC, 0, 0, 120, 120, hMemDC, 0, 0, SRCCOPY);


                ReleaseDC(hDeskTop, hDeskTopDC);

                ReleaseDC(hBitMap, hBitDC);

                return 0;


        case WM_PAINT:

                hDC = BeginPaint(hwnd, &ps);


                GetClientRect(hwnd, &rect);

                DrawText(hDC, TEXT("放大镜"), -1, &rect, DT_CENTER);


                EndPaint(hwnd, &ps);

                return 0;

        }

        return DefWindowProc(hwnd, message, wParam, lParam);
}

运行效果

QQ图片20161222190840.png

评分

参与人数 1荣誉 +8 鱼币 +8 贡献 +5 收起 理由
拈花小仙 + 8 + 8 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-26 23:16:05 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 12:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表