huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


之前也写过相同的功能,不过原理是绘制到 IMAGE 上,再贴图到任意窗口,见 http://huidong.xyz/?mode=2&id=116


声明:这次这是做个实验玩玩,真正在代码中这样做没有任何好处。


首先介绍一下类在内存中的存储方式。

如果这个类有虚函数,那么类的前四个字节就是虚函数的表。后面紧接着就是各种变量了,所以直接取值就行。但是有的时候涉及内存对齐,我就没研究了。


这回是通过指针改了 IMAGE 对象的 private 成员 m_hMemDC,见代码:

#include <easyx.h>
#include <stdio.h>

int main()
{
    IMAGE img(500, 500);

    int* p = (int*)((IMAGE*)(&img));
    p += 4;
    *p = (int)GetDC(GetConsoleWindow());

    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < i + 1; j++)
            printf("EasyX~ooooo");
        printf("\n");
    }

    SetWorkingImage(&img);
    while (true)
    {
        cleardevice();
        setfillcolor(WHITE);
        fillcircle(20, 20, 10);
        settextcolor(RED);
        settextstyle(72, 0, L"");
        setbkmode(TRANSPARENT);
        outtextxy(100, 100, L"EasyX");
        Sleep (10);
    }

    _gettch();

    return 0;
}




返回首页


Copyright (C) 2018-2024 huidong