That makes your whole program to stop for X milliseconds.
Instead insert something like this pseudocode into your gameloop:
int iLastTick;
int iCurrentTick;
int iSecondsBetweenShots = 1;
iCurrentTick = GetCurrentTickFromClock();
if (((iCurrentTick-iLastTick) >= iSecondsBetweenShots) && (IsPressed(Key[SHOOT]))
{
Shoot();
}
iLastTick = iCurrentTick;
----------------------------
I use a variant of this and it works great.
This pseudocode can also be used for animations and other timed events.