Есть ли простой способ разделить невероятно длинную функцию WndProc на отдельные функции?Я мог бы буквально создавать функции и вызывать их при обработке конкретного сообщения, но это означало бы, что мне нужно передать много аргументов, и это выглядело бы очень грязно.
К сожалению, должен использовать только C и сырой Win32.
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static WNDPROC OldWndProc[BUTTON_COUNT];
static HMENU menu;
static windowSizeX, windowSizeY;
//lots more static variables
switch (message)
{
case WM_SIZE:
clientX = LOWORD(lParam);
clientY = HIWORD(lParam);
si.cbSize = sizeof(si);
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;
si.nMin = 0;
si.nMax = 1500;
si.nPage = clientY;
si.nPos = 0;
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
return 0;
// more code
}