Это обычно имеет место при приведении указателя функции для закрытия компилятора при вызове Windows API, такого как DialogBox:
DialogBox(hInstance, MAKEINTRESOURCE(MY_DIALOG), hWnd, &dlgProc);
Windows немного странная в том смысле, что все функции определены с соглашением о вызовах stdcall, в отличие от cdecl, по умолчанию в C. Поэтому все функции, которые должны быть переданы в API Windows, должны быть определены с WINAPI STDCALL):
INT_PTR WINAPI dlgProc(HWND, UINT, WPARAM, LPARAM);
Если вы пропустите это и вместо этого определите свой dlgProc как:
INT_PTR dlgProc(HWND, UINT, WPARAM, LPARAM);
Ваш код не скомпилируется, и у вас может возникнуть соблазн просто выключить чертов компилятор:
DialogBox(hInstance, MAKEINTRESOURCE(MY_DIALOG), hWnd, (DLGPROC)&dlgProc); // be a DLGPROC already, dammit!!
Не делай этого. Программа вылетит. Компилятор твой друг. Оператор приведения в стиле C - нет. Компилятор попытался сказать вам, что это должно было случиться. И это было правильно. Послушай это.