24LRESULT CALLBACK gf_draw_platform_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
50 return DefWindowProc(hWnd, msg, wp, lp);
60 while(PeekMessage(&msg, draw->
platform->window, 0, 0, PM_NOREMOVE)) {
61 if(GetMessage(&msg, draw->
platform->window, 0, 0)) {
62 TranslateMessage(&msg);
63 DispatchMessage(&msg);
70 gf_draw_driver_before(draw);
72 gf_draw_driver_after(draw);
84 memset(platform, 0,
sizeof(*platform));
85 platform->engine = engine;
87 platform->instance = (HINSTANCE)GetModuleHandle(NULL);
88 if(platform->instance == NULL) {
90 gf_draw_platform_destroy(platform);
94 wc.cbSize =
sizeof(wc);
95 wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
96 wc.lpfnWndProc = gf_draw_platform_proc;
99 wc.hInstance = platform->instance;
100 wc.hIcon = LoadIcon(platform->instance,
"GAME");
101 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
102 wc.hbrBackground = NULL;
103 wc.lpszMenuName = NULL;
104 wc.lpszClassName =
"goldfish";
105 wc.hIconSm = LoadIcon(platform->instance,
"GAME");
106 if(!RegisterClassEx(&wc)) {
108 gf_draw_platform_destroy(platform);
112 platform->window = CreateWindow(
"goldfish", draw->
title, (WS_OVERLAPPEDWINDOW), draw->
x, draw->
y, draw->
width, draw->
height, NULL, 0, platform->instance, NULL);
113 if(platform->window == NULL) {
115 gf_draw_platform_destroy(platform);
119 SetWindowLongPtr(platform->window, GWLP_USERDATA, (LONG_PTR)draw);
121 platform->dc = GetDC(platform->window);
125 style = (DWORD)GetWindowLongPtr(platform->window, GWL_STYLE);
126 AdjustWindowRect(&rect, style, FALSE);
127 SetWindowPos(platform->window, NULL, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOMOVE);
129 ShowWindow(platform->window, SW_NORMAL);
130 UpdateWindow(platform->window);