windows-nt/Source/XPSP1/NT/public/internal/windows/inc/duser/duser.gh
2020-09-26 16:20:57 +08:00

181 lines
3.4 KiB
Plaintext

helper EventGadget
{
typedef UINT (CALLBACK * EventHandler)(void * pvData, EventMsg * pmsg);
};
helper Visual
{
struct VisualCI : public DUser::Gadget::ConstructInfo
{
Visual * pgvParent;
};
inline HRESULT IsVisible(BOOL * pfVisible, UINT nFlags)
{
return IsParentChainStyle(GS_VISIBLE, pfVisible, nFlags);
}
inline HRESULT IsEnabled(BOOL * pfEnabled, UINT nFlags)
{
return IsParentChainStyle(GS_ENABLED, pfEnabled, nFlags);
}
inline HRESULT SetRect(UINT nFlags, int x, int y, int cx, int cy)
{
RECT rc;
rc.left = x;
rc.top = y;
rc.right = x + cx;
rc.bottom = y + cy;
return SetRect(nFlags, &rc);
}
};
helper Animation
{
enum ETime
{
tComplete, // Completed normally
tEnd, // Jumped to end
tAbort, // Aborted in place
tReset, // Reset to beginning
tDestroy // The Gadget being animationed has been destroyed
};
struct AniCI : public DUser::Gadget::ConstructInfo
{
DWORD cbSize;
Visual * pgvSubject;
GMA_ACTION act;
Interpolation *
pipol;
Flow * pgflow;
};
static void Stop(Visual * pgvSubject, PRID prid)
{
DUserStopAnimation(pgvSubject, prid);
}
BEGIN_STRUCT(CompleteEvent, EventMsg)
BOOL fNormal; // Sequenced finished normally
END_STRUCT(CompleteEvent)
DEFINE_EVENT(evComplete, "E90A6ABB-E4CF-4988-87EA-6D1EEDCD0097");
};
helper Flow
{
enum ETime
{
tBegin = 0,
tEnd
};
struct FlowCI : public DUser::Gadget::ConstructInfo
{
DWORD cbSize;
Visual * pgvSubject;
};
};
helper AlphaFlow
{
static PRID GetPRID()
{
return DUserGetAlphaPRID();
}
struct AlphaKeyFrame : DUser::KeyFrame
{
float flAlpha;
};
};
helper RectFlow
{
static PRID GetPRID()
{
return DUserGetRectPRID();
}
struct RectKeyFrame : DUser::KeyFrame
{
UINT nChangeFlags;
RECT rcPxl;
};
};
helper RotateFlow
{
enum EDirection
{
dMin = 0,
dShort = 0, // Shortest arc
dLong = 1, // Longer arc
dCW = 2, // Clock-wise
dCCW = 3, // Counter clock-wise
dMax = 3,
};
static PRID GetPRID()
{
return DUserGetRotatePRID();
}
struct RotateKeyFrame : DUser::KeyFrame
{
float flRotation;
EDirection nDir;
};
};
helper ScaleFlow
{
static PRID GetPRID()
{
return DUserGetScalePRID();
}
struct ScaleKeyFrame : DUser::KeyFrame
{
UINT nChangeFlags;
float flScale;
};
};
helper Sequence
{
struct AnimationInfo
{
DWORD cbSize;
};
};
helper DropTarget
{
struct DropCI : DUser::Gadget::ConstructInfo
{
HWND hwnd;
Visual * pgvRoot;
};
static DropTarget *
BuildDropTarget(HWND hwnd, Visual * pgvRoot)
{
DropTarget::DropCI ci;
ZeroMemory(&ci, sizeof(ci));
ci.hwnd = hwnd;
ci.pgvRoot = pgvRoot;
return DropTarget::Build(&ci);
}
};