Итак, проходя через источник программы winapi, которую я нашел в Интернете, я заметил, что WinMain не было нигде, мне интересно, возможно ли вообще сделать так, чтобы программа winapi работала так, почему вы думаете, оригинальный программист сделал что-то вроде этого, у нас есть процедура диалога, как это:точка входа winapi без WinMain
static INT_PTR CALLBACK mainDialogProc(HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
{
//..............
}
}
}
и главный EntryPoint был, как это вместо пустоты WINAPI WinMain (ничтожной);
void WINAPI entryPoint(void)
{
//........
}
Действительно ли это возможно? это противоречит всем, что я изучил до сих пор ... Я действительно уверен, что мне что-то не хватает ...
WinMain - это только соглашение, вы не имеете * его использовать. Параметр linker/ENTRY может сделать любую функцию без параметра - точкой входа в программу. Что довольно неразумно, вы обойдете инициализацию библиотеки времени выполнения C. Не то чтобы вы когда-либо использовали много, но вы также обойдете любую инициализацию своих собственных статических объектов. Возможно, это был проект с наименьшей возможной программой, использование шаблона диалога является типичной частью такого взлома. Не делай этого. –
@HansPassant Кроме того, есть части среды выполнения C, которые используются неявно, например, защита переполнения буфера GS и 'atexit'. Поэтому, даже если вы не думаете, что используете время выполнения C, вы можете быть. –