diff options
Diffstat (limited to 'init_windows.c')
| -rw-r--r-- | init_windows.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/init_windows.c b/init_windows.c new file mode 100644 index 0000000..4b35fc3 --- /dev/null +++ b/init_windows.c @@ -0,0 +1,73 @@ +// 17 july 2014 + +#include "winapi_windows.h" + +HINSTANCE hInstance; +int nCmdShow; + +HICON hDefaultIcon; +HCURSOR hArrowCursor; + +HFONT controlFont; +HFONT titleFont; +HFONT smallTitleFont; +HFONT menubarFont; +HFONT statusbarFont; + +HBRUSH hollowBrush; + +DWORD initWindows(char **errmsg) +{ + STARTUPINFOW si; + NONCLIENTMETRICSW ncm; + + // WinMain() parameters + hInstance = GetModuleHandleW(NULL); + if (hInstance == NULL) { + *errmsg = "error getting hInstance"; + return GetLastError(); + } + nCmdShow = SW_SHOWDEFAULT; + GetStartupInfoW(&si); + if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0) + nCmdShow = si.wShowWindow; + + // icons and cursors + hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION); + if (hDefaultIcon == NULL) { + *errmsg = "error loading default icon"; + return GetLastError(); + } + hArrowCursor = LoadCursorW(NULL, IDC_ARROW); + if (hArrowCursor == NULL) { + *errmsg = "error loading arrow (default) cursor"; + return GetLastError(); + } + + // standard fonts +#define GETFONT(l, f, n) l = CreateFontIndirectW(&ncm.f); \ + if (l == NULL) { \ + *errmsg = "error loading " n " font"; \ + return GetLastError(); \ + } + + ZeroMemory(&ncm, sizeof (NONCLIENTMETRICSW)); + ncm.cbSize = sizeof (NONCLIENTMETRICSW); + if (SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof (NONCLIENTMETRICSW), &ncm, sizeof (NONCLIENTMETRICSW)) == 0) { + *errmsg = "error getting non-client metrics parameters"; + return GetLastError(); + } + GETFONT(controlFont, lfMessageFont, "control"); + GETFONT(titleFont, lfCaptionFont, "titlebar"); + GETFONT(smallTitleFont, lfSmCaptionFont, "small title bar"); + GETFONT(menubarFont, lfMenuFont, "menu bar"); + GETFONT(statusbarFont, lfStatusFont, "status bar"); + + hollowBrush = GetStockObject(HOLLOW_BRUSH); + if (hollowBrush == NULL) { + *errmsg = "error getting hollow brush"; + return GetLastError(); + } + + return 0; +} |
