26LRESULT CALLBACK gf_draw_platform_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
94 return DefWindowProc(hWnd, msg, wp, lp);
104 while(PeekMessage(&msg, draw->
platform->window, 0, 0, PM_NOREMOVE)) {
105 if(GetMessage(&msg, draw->
platform->window, 0, 0)) {
106 TranslateMessage(&msg);
107 DispatchMessage(&msg);
114 gf_draw_driver_before(draw);
116 gf_draw_driver_after(draw);
128 memset(platform, 0,
sizeof(*platform));
129 platform->engine = engine;
131 platform->instance = (HINSTANCE)GetModuleHandle(NULL);
132 if(platform->instance == NULL) {
134 gf_draw_platform_destroy(platform);
138 wc.cbSize =
sizeof(wc);
139 wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
140 wc.lpfnWndProc = gf_draw_platform_proc;
143 wc.hInstance = platform->instance;
144 wc.hIcon = LoadIcon(platform->instance,
"GAME");
145 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
146 wc.hbrBackground = NULL;
147 wc.lpszMenuName = NULL;
148 wc.lpszClassName =
"goldfish";
149 wc.hIconSm = LoadIcon(platform->instance,
"GAME");
150 if(!RegisterClassEx(&wc)) {
152 gf_draw_platform_destroy(platform);
156 platform->window = CreateWindow(
"goldfish", draw->
title, (WS_OVERLAPPEDWINDOW), draw->
x, draw->
y, draw->
width, draw->
height, NULL, 0, platform->instance, NULL);
157 if(platform->window == NULL) {
159 gf_draw_platform_destroy(platform);
163 SetWindowLongPtr(platform->window, GWLP_USERDATA, (LONG_PTR)draw);
165 platform->dc = GetDC(platform->window);
169 style = (DWORD)GetWindowLongPtr(platform->window, GWL_STYLE);
170 AdjustWindowRect(&rect, style, FALSE);
171 SetWindowPos(platform->window, NULL, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOMOVE);
173 ShowWindow(platform->window, SW_NORMAL);
174 UpdateWindow(platform->window);