Компилятор обычно просматривает файлы *.cpp, *.c и некоторые другие(не уверен можно ли это менять). Такие файлы попадают обычно в папку SorceFiles. Заоговочные файлы (*.h, *.hpp) можно вообще выкинуть из проекта. Компилятор о них знает только потому, что на них есть #include в *.cpp, *.с и др.
Особого внимания заслуживает файл stdafx.h. Дело в том, что для ускорения компиляции проекта используется прекомпиляция. При первом запуске результат компиляции "редко изменяемого" кода записывается в Precompiled Header это файл с расширением *.pch. При последующих билдах компиляция этого "редко изменяемого" кода не происходит. Обычно "редкои изменяемый" код это заголовочные файлы библиотек.
Если посмотреть на настройку проекта VC, то в разделе [C/C++]->[Precompiled Header] можно найти настройки прекомпиляции, там же указан и файл который надо прекомпилировать - stdafx.h. Если выключить совсем прекомпиляцию, то ошибки с не найденной директивой не будет.
Схема такая, включаете прекомпиляцию и все включения заголовков библиотек выносите в stdafx.h, его включаете во все *.cpp. Или выключаете прекомпиляцию и можете "разбрасываеть" включения по своему проекту как хотите :) Хотя я бы советовал во втором случае тоже вынести все в stdafx.h.
Все выше изложенное относиться к MS Visual Studio 2003, в других версиях расположение настроек может быть другим. Но смысл прекомпиляции тот же.
-- Dmitry Peleshenko --