см. как например я делал когда-то... http://e-jonie.narod.ru/tmp/screenshooter.7z (правда недописано, мож допишет хто?)))
там в общем есть class CWinWrap (это типа враппер над окном) , в нем и запихан цикл обратки сообщений а сохранение и загрузка указателя на класс, которому "принадлежит" обработчик так :
Код | // гдето в меотде класса создаем окошко _hwnd = CreateWindowEx(_dwExtendedStyle, _pszClassName, _pszTitle, _dwStyle, x, y, nWidth, nHeight, hParent, hMenu, hInstance, (void*)this);
//а это та статическая обработка сообщений LRESULT CALLBACK CWinWrap::BaseWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { //A pointer to the object is passed in the CREATESTRUCT if(msg == WM_NCCREATE) SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)((LPCREATESTRUCT)lParam)->lpCreateParams);
BOOL bProcessed = FALSE; LRESULT lResult;
//Retrieve the pointer CWinWrap *pObj = (CWinWrap *)GetWindowLongPtr(hwnd, GWLP_USERDATA); .... }
|
|