diff options
| author | Pietro Gagliardi <[email protected]> | 2015-12-11 20:37:59 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2015-12-11 20:37:59 -0500 |
| commit | f8e3f12ab02b528f2a05a4f713d7af7ea8e44b42 (patch) | |
| tree | 82dedf4d37f0f6d31e88ebb2ca1ce6499dead261 /prev/init_windows.c | |
| parent | e34c561ed5bedeb180437ec165882b98d70d38c1 (diff) | |
LET'S GET THIS FINAL REWRITE EVER STARTED
Diffstat (limited to 'prev/init_windows.c')
| -rw-r--r-- | prev/init_windows.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/prev/init_windows.c b/prev/init_windows.c new file mode 100644 index 0000000..4b35fc3 --- /dev/null +++ b/prev/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; +} |
