In the definition you proposed, the identifiers don't have the values they are supposed to have. e.g, in your definition the value of D2D1_PROPERTY_CLSID is 0 instead of $80000000
There are reasons to create an enumerated type, the reasons vary depending on the purpose of the enumeration but, among them:
1. an enumerated type, unlike a constant, is a type, therefore each identifier has the size of the enumeration. This can be very important depending on how the enumeration is used.
2. an enumerated type without gaps between its member can be used in a "for in" statement. You cannot do that with constants.
3. an enumerated type formalizes that the group of constants belong together. Stand alone constant give no indication of how they should be or are group (if they are grouped at all.)
4. an enumerated type is a very convenient mechanism to ensure a group of constants have consecutive values (the compiler assigns the values for you - though you can override that, which allows you to define multiple ranges in an enumeration - all neatly grouped in a type instead of a jumble of constants.
Those off the top of my head, I'm pretty sure there are other reasons too but, that should suffice.
as an example of 3. consider the function (in C):
__kernel_entry NTSTATUS NtQueryInformationThread(
[in] HANDLE ThreadHandle,
[in] THREADINFOCLASS ThreadInformationClass,
[in, out] PVOID ThreadInformation,
[in] ULONG ThreadInformationLength,
[out, optional] PULONG ReturnLength
);
Since the ThreadInformationClass is of type THREADINFOCLASS that allows the compiler to enforce that the value of the parameter be a member of the type. If the enumeration did not exist, the compiler could not do any checking thus allowing the programmer to pass a wrong value, necessitating using a debugger to figure out that the value passed is not valid.
That should answer your question: "But why does it need to be Enumerated instead of Constants ???"
Now you know (or at least should know.)
Succinctly, plenty of good reasons to define enumerated types instead of constants.
HTH.