描述:
在COM里BSTR对应字符串,有CComBSTR类来干活、OLE_COLOR对应COLORREF,有OleTranslateColor()函数来进行OLE_COLOR和COLORREF之间的类型变换,现在问题是,那么ULONG、USHORT、OLE_XSIZE_PIXELS这些由什么来对应呢?难道直接使用?比如一个COM方法:
HRESULT SetWindowSize(INT x, INT y)
{
// 像下面一样直接使用INT类型的x、y?
MoveWindow(0, 0, x, y);
}
解决方案1:
INT = int
解决方案2: typedef long OLE_XPOS_PIXELS;
typedef long OLE_YPOS_PIXELS;
typedef long OLE_XSIZE_PIXELS;
typedef long OLE_YSIZE_PIXELS;
typedef float OLE_XPOS_CONTAINER;
typedef float OLE_YPOS_CONTAINER;
typedef float OLE_XSIZE_CONTAINER;
typedef float OLE_YSIZE_CONTAINER;
OLE_COLOR是vb提供的四个标准类型之一,OLE_COLOR 数据类型适用于返回颜色的属性。当属性被声明为 OLE_COLOR 时,“属性”窗口中会显示出一个颜色选取对话框,允许用户可视地为属性选择颜色,而不用记忆对应的数字表示。OLE_COLOR 在内部当作 Long 来处理。而COLORREF是vc的标准类型,COLORREF -- A 32-bit value used as a color value,LONG A 32-bit signed integer.它们的内部类型不一样!所以要转换!