zay, у нас на форуме "в лом" не бывает. Бывает только - нет времени. Поэтому извиняй за краткость.
MFC это просто враппер (ООП оболочка) для API. Те MFC без API существовать не может.
Поэтому если хочешь серъёзно этим заниматься, то без API не обойдёшься. если есть время начинай с него. А потом перейдёшь на MFC. С MFC просто быстрее и удобнее добиваться результатов. Так же хороший помошник в больших проектах, где используется большое количество элементов управления, окон. Ну в общем если знаешь разницу между ООП и прцедуральным программированием, то MFC предлагает тебе все прелести работы с объектами.
Приведу простой пример - это не весь класс, который имплементирован в MFC, а только идея (параметры ф-ций я тоже опускаю, где это не существенно):
Для создания окна в API используется ф-я CreateWindow(), которя возвращает хэндл созданного ею окна.
HWND hwnd = ::CreateWindow();
этот хэндл испльзуется потом в ф-ях доступа к окну - например ::SetWindowText(hwnd,"");
Те мне надо постоянно "помнить" этот хендл. Например делать его глобальным.
Теперь я воспользуюсь MFC:
class CWnd
{
public:
CWnd();
~CWnd();
void CreateWindow()
{
m_hwnd = ::CreateWindow();
}
void SetWindowText(CString stTitle)
{
::SetWindowText(m_hwnd, stTitle);
}
private:
HWND m_hwnd;
};
использование класса
CWnd wndMyFirstWnd;
wndMyFirstWnd.Create();
wndMyFirstWnd.SetWindowText("MyFirstWnd");
Знание API поможет легче понять, что происходит в глубинах MFC, как работает та или иная ф-я, класс. К тому же в случае необходимости, можно запросто использовать вызов API функций в MFC проектах.
Ну и самое главное - программирование под виндой - это программирование API - те использование ф-ций винды находящихся в системных длл - kernel, user, comctl, comdlg и тд. Другого не дано. Всё остальное (WTL, ATL) - оболочки призванные облегчить жизнь программиста. Пользователю в конечном итоге до лампочки на чём и как ты программишь.
И ещё одно - все исходники MFC открыты и поставляются в пакете VS. Те всегда можно посмотреть, что там происходит.