просто мне не понятно при программировании на WinAPI в функции окна например так:
| Код | LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { static cxClient, cyClient; switch (msg) { case WM_CREATE: return 0; case WM_PAINT: PAINTSTRUCT ps; TextOut(hdc,cxClient/2,cyClient/2,"Hello WinAPI",13); EndPaint(hwnd,&ps); return 0; case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hwnd,msg,wParam,lParam); }
|
переменные cxClient и cyClient, получают значения из WM_SIZE, однако при обработке любого сообщения опять вызывается объявления cxClient и cyClient, т.к они находятся в самом начале функции WndProc. Как тут не происходит ошибки?
Добавлено через 6 минут и 3 секунды mes, т.е инициализировав static int a = 10; один раз, следующие вызовы этой функций f(i) игнорируют эту инициализацию, переменная a уже к моменту второго вызова существует. |