请问绘图函数怎么封装进DLL

0

如果要将EasyX绘图函数封装进DLL,就必须要指定这些函数作用的父窗口

但是EasyX没有像Windows API那样通过传入窗口句柄实现绘图的函数

所以想问下有没有解决办法

#include <Windows.h>
#include <graphics.h>

#define DLL_API __declspec(dllexport)

DLL_API void FaceDraw1(bool f)
{
    setlinecolor(RGB(37, 75, 137));
	setfillcolor(RGB(176, 191, 213));
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	setlinestyle(PS_SOLID, 5);
	//详细部分省略
}
ava
System

2022-8-16

0

你的问题标题是“请问绘图函数怎么封装进 DLL”,但是好像问的又是“如何修改目标绘图窗口”?这就已经开始矛盾了。

我表示不理解你说的:

既然有 HWND GetHWnd(); 就可以把他作为一个DLL函数参数传入 从而实现更改父窗口
晕。

你这个语言逻辑感觉很混乱,可能是我理解得有问题,我就我的理解勉强解释一下。

  1. 不可以直接调用绘图函数,除非在这之前创建了绘图窗口,或设置了 IMAGE 对象为绘制目标。
  2. 绘图目标窗口不可更改,只能绘制到 EasyX 创建的绘图窗口上,但是可以画到 IMAGE 对象上。如果非要绘制到其它窗口,则可以先绘图到 IMAGE 对象,再拷贝绘图内容到目标窗口(参见 BitBlt 函数)

对于上面我引用你的那句话,我不懂你怎么得出这个因果关系的。

GetHWnd() 函数只是用来获取绘图窗口的句柄,它获取的句柄是 initgraph 所创建窗口的句柄,且不能设置任意窗口为绘图窗口。你的意思是将获取到的句柄传入 dll 函数中?我不知道这样如何“从而实现更改父窗口”。

综上

  1. 绘图窗口不能改
  2. 可以画到 IMAGE 对象,再贴图到你想绘制的窗口

只能帮你到这里了,你再想想你这个问题是不是逻辑有问题。

再多说一句,你这个问题,和 DLL 没有任何关系。

ava
huidong

2022-8-17

问题已经改了 -  System  2022-8-17
@System  我已经解答过了,还有任何问题吗? -  huidong  2022-8-17
技术讨论社区