假设我有一个任意的GDI +句柄,我怎样才能确定它代表的GDI +对象的基础类型?笔刷,笔,图像,矩阵等?确定GDI中的句柄类型+
我已经在网上搜索,但只能找到GDI的例子,但没有GDI +,GDI +有这样的设施吗?
编辑:只是要注意,我没有使用C++,所以我没有访问任何语言特定的功能来确定对象类型。我正在为AutoHotkey创建一个GDI +包装器,所以我非常局限于DLL中的函数。
假设我有一个任意的GDI +句柄,我怎样才能确定它代表的GDI +对象的基础类型?笔刷,笔,图像,矩阵等?确定GDI中的句柄类型+
我已经在网上搜索,但只能找到GDI的例子,但没有GDI +,GDI +有这样的设施吗?
编辑:只是要注意,我没有使用C++,所以我没有访问任何语言特定的功能来确定对象类型。我正在为AutoHotkey创建一个GDI +包装器,所以我非常局限于DLL中的函数。
使用typeid
操作
例子:
Gdiplus::Brush *brush;
Gdiplus::Pen *pen;
Gdiplus::Image *image;
Gdiplus::Matrix *matrix;
cout << "brush: " << typeid(brush).name() << '\n';
cout << "pen: " << typeid(pen).name() << '\n';
cout << "image: " << typeid(image).name() << '\n';
cout << "matrix: " << typeid(matrix).name() << '\n';
输出:
brush: class Gdiplus::Brush * pen: class Gdiplus::Pen * image: class Gdiplus::Image * matrix: class Gdiplus::Matrix *
如果我使用C++,那将会很有帮助,我正在为AutoHotkey创建一个GDI +包装器,所以很遗憾我无法访问typeid操作符。我希望可以通过AHKs DllCall函数调用某种API调用,但我没有太多运气。感谢您的回答,我应该更清楚我使用的是哪种环境!虽然你的答案不是我所需要的,但它对于C++用户来说非常合适,所以我投票赞成! :) –
我不熟悉在AutoHotkey。你应该发布一些示例代码。如果你使用的是Gdi + Flat API,那么我认为没有办法。 –
是的,我仅限于使用Flat API或其他来自DLL的API调用。 AHK是一种解释型语言,并且有一些限制,不确定我可以发布哪些代码示例,因为代码本身并不真正相关。然而,我确信你是对的,因为除了像前面提到的那样使用“typeid”操作符之外,似乎并没有正式的方式来从句柄本身确定GDI +句柄的类型。 –
这些对象是否有独特的方法或属性?快速查看文档,似乎Pen具有“PenType”属性,而其他类都没有。为了通过属性或方法来确定一个对象,可能会有点乏味,但是我认为这比任何事情都好。 – MCL