I use DirectX with C. I don't code in C++ at the mo because I don't think I'd make the best use of its features (you know how it is, you become set in your non class-oriented ways ), but it's quite possible.
Most C people see a COM object, scream and peg it back to Linux or somewhere similarly coded. Fortunately COM is C compatible, just looks a bit uglier when you have to go through the lpVtbl pointer and specify the address of the object you want to perform the function with, e.g.:-
That said, I'm not sure whether the same can be done with the most recent version of DX, I know the above works up to DX 8.
LPDIRECTDRAW2 lpdd2 = NULL;
// To initialize DirectX 2 in C (After first getting it with CoCreateInstance, etc.)
// The same in C++
And this "C is faster than C++" argument is a bit tired. On modern machines (i.e. anything above the original Pentium) it isn't noticable, and if you configure the C++ compiler properly the difference is practically nil.