SOLVED
the solution, in case someone else needs it (and I can't see a reason why not...It's a very useful and problematic function)
Code:
LARGE_INTEGER ticksPerSecond;
LARGE_INTEGER tick1; // A point in time
LARGE_INTEGER tick2; // Another point in time
UINT64 Utick1, Utick2, Ufreq;
// get the high resolution counter's accuracy
QueryPerformanceFrequency(&ticksPerSecond); //freq in [counts per second]
Ufreq = ticksPerSecond.QuadPart;
MessageBox(NULL,"In Thread, lets sleep for 0.001[sec] and see how long it really took", NULL, NULL);
QueryPerformanceCounter(&tick1); //get current clock count
Sleep(1);
QueryPerformanceCounter(&tick2); //get current clock count
Utick1=tick1.QuadPart; //THIS IS THE IMPORTANT THING. CONVERT TO UNSIGNED
Utick2=tick2.QuadPart;
UINT64 deltaCounts = (Utick2-Utick1);
double deltaTime = (double)deltaCounts / (double)Ufreq;
strstream os; //BETTER TO USE STRSTREAM AND NOT SPRINTF
os << "freq "<<Ufreq<<endl
<<"delta counts "<<deltaCounts<<endl
<<"delta time " << deltaTime << endl;
MessageBox(NULL, os.str(), NULL, NULL);
Thank you all very much for helping!!!