bool SkOSWindow::wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_KEYDOWN: { SkKey key = winToskKey(wParam); if (kNONE_SkKey != key) { this->handleKey(key); return true; } } break; case WM_KEYUP: { SkKey key = winToskKey(wParam); if (kNONE_SkKey != key) { this->handleKeyUp(key); return true; } } break; case WM_UNICHAR: this->handleChar((SkUnichar) wParam); return true; case WM_CHAR: { this->handleChar(SkUTF8_ToUnichar((char*)&wParam)); return true; } break; case WM_SIZE: { INT width = LOWORD(lParam); INT height = HIWORD(lParam); this->resize(width, height); break; } case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); this->doPaint(hdc); EndPaint(hWnd, &ps); return true; } break; case WM_LBUTTONDOWN: this->handleClick(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), Click::kDown_State, NULL, getModifiers(message)); return true; case WM_MOUSEMOVE: this->handleClick(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), Click::kMoved_State, NULL, getModifiers(message)); return true; case WM_LBUTTONUP: this->handleClick(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), Click::kUp_State, NULL, getModifiers(message)); return true; case WM_EVENT_CALLBACK: if (SkEvent::ProcessEvent()) { post_skwinevent(); } return true; } return false; }
void SkEvent::SignalNonEmptyQueue() { post_skwinevent(); //SkDebugf("signal nonempty\n"); }
void SkEvent::SignalNonEmptyQueue() { SkOSWindow::ForAllWindows([](void* hWND, SkOSWindow**) { post_skwinevent((HWND)hWND); }); }