I'm displaying it in linear. But I really don't care too much about the display; I was just using that to visualize the numbers that I was getting. What I want to do is to check whether there is a 1000Hz in the input sample. So I just constantly read the value that is in the FFT output bin for 1000Hz. If the value is greater than a certain threshold, I say that there is a 1000Hz in the sample. I play this same audio file over and over again, and most of the time, the value is greater than the threshold, but as I said, once in a while, it is much lower than the threshold.
The only difference that I can think of is that I play this same audio file at a different time in the FFT input cycle, and that is why I thought that your suggestion of a windowing problem might be the solution.