Всем огромный привет,- я к вам с вопросом(теоритическим)
Собственно был вопрос,- расскажи как работает твоя программа? (Структура работы программы на API) ?
Ответ: В функции WinMain регистрируется класс главного окна, в одном из полей которого указывается имя оконной процедуры(главной). Затем если класс был зарегистрирован, то вызывается функция CreateWindow для создания окна(класс которого зарегили) и присваиваем свободному хендлу возвращаемое значение. Окно отображается на экране функцией ShowWindow, причем посылается сообщение WM_CREATE, а затем WM_PAINT. Далее организуется цикл обработки сообщений( рассказал про 2 очереди сообщений(системную и програмную), про то как они функционируют и определены в оконной процедуре).
Всё хорошо, но следующий вопрос завёл меня в тупик,- "Один раз сообщение WM_PAINT посылается функцией ShowWindow, а ещё какими функциями оно посылается?". Отвечал что оно генерируется автоматически при изменении размеров, сворачивании, и прочих операциях с окном, и выполняется следующий отрывок перерисовки:
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&rect);
EndPaint(hWnd,&ps);
break;
. На что мне из раза в раз повторяли вопрос, какие всё таки функции посылают это сообщение WM_PAINT? Преподователь говорил что этот вызов происходит неявно и в моей программе как минимум 1 такая функция, а то и больше(хотя программу преподователь даже не смотрел). Я в замешательстве =\