コード例 #1
0
ファイル: init.cpp プロジェクト: StapleButter/melonDS
const char *uiInit(uiInitOptions *o)
{
	STARTUPINFOW si;
	const char *ce;
	HICON hDefaultIcon;
	HCURSOR hDefaultCursor;
	NONCLIENTMETRICSW ncm;
	INITCOMMONCONTROLSEX icc;
	HRESULT hr;

	options = *o;

	initAlloc();

	nCmdShow = SW_SHOWDEFAULT;
	GetStartupInfoW(&si);
	if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0)
		nCmdShow = si.wShowWindow;

	SetProcessDPIAware();

	hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION);
	if (hDefaultIcon == NULL)
		return ieLastErr("loading default icon for window classes");
	hDefaultCursor = LoadCursorW(NULL, IDC_ARROW);
	if (hDefaultCursor == NULL)
		return ieLastErr("loading default cursor for window classes");

	ce = initUtilWindow(hDefaultIcon, hDefaultCursor);
	if (ce != NULL)
		return initerr(ce, L"GetLastError() ==", GetLastError());

	if (registerWindowClass(hDefaultIcon, hDefaultCursor) == 0)
		return ieLastErr("registering uiWindow window class");

	ZeroMemory(&ncm, sizeof (NONCLIENTMETRICSW));
	ncm.cbSize = sizeof (NONCLIENTMETRICSW);
	if (SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof (NONCLIENTMETRICSW), &ncm, sizeof (NONCLIENTMETRICSW)) == 0)
		return ieLastErr("getting default fonts");
	hMessageFont = CreateFontIndirectW(&(ncm.lfMessageFont));
	if (hMessageFont == NULL)
		return ieLastErr("loading default messagebox font; this is the default UI font");

	if (initContainer(hDefaultIcon, hDefaultCursor) == 0)
		return ieLastErr("initializing uiWindowsMakeContainer() window class");

	hollowBrush = (HBRUSH) GetStockObject(HOLLOW_BRUSH);
	if (hollowBrush == NULL)
		return ieLastErr("getting hollow brush");

	ZeroMemory(&icc, sizeof (INITCOMMONCONTROLSEX));
	icc.dwSize = sizeof (INITCOMMONCONTROLSEX);
	icc.dwICC = wantedICCClasses;
	if (InitCommonControlsEx(&icc) == 0)
		return ieLastErr("initializing Common Controls");

	hr = CoInitialize(NULL);
	if (hr != S_OK && hr != S_FALSE)
		return ieHRESULT("initializing COM", hr);
	// LONGTERM initialize COM security
	// LONGTERM (windows vista) turn off COM exception handling

	hr = initDraw();
	if (hr != S_OK)
		return ieHRESULT("initializing Direct2D", hr);

	hr = initDrawText();
	if (hr != S_OK)
		return ieHRESULT("initializing DirectWrite", hr);

	if (registerAreaClass(hDefaultIcon, hDefaultCursor) == 0)
		return ieLastErr("registering uiArea window class");

	if (registerMessageFilter() == 0)
		return ieLastErr("registering libui message filter");

	if (registerD2DScratchClass(hDefaultIcon, hDefaultCursor) == 0)
		return ieLastErr("initializing D2D scratch window class");

	return NULL;
}
コード例 #2
-1
ファイル: init.c プロジェクト: mantyr/libui
const char *uiInit(uiInitOptions *o)
{
    STARTUPINFOW si;
    const char *ce;
    HICON hDefaultIcon;
    HCURSOR hDefaultCursor;
    NONCLIENTMETRICSW ncm;
    INITCOMMONCONTROLSEX icc;
    HRESULT hr;

    options = *o;

    if (initAlloc() == 0)
        return loadLastError("error initializing memory allocations");

    initResizes();

    nCmdShow = SW_SHOWDEFAULT;
    GetStartupInfoW(&si);
    if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0)
        nCmdShow = si.wShowWindow;

    hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION);
    if (hDefaultIcon == NULL)
        return loadLastError("loading default icon for window classes");
    hDefaultCursor = LoadCursorW(NULL, IDC_ARROW);
    if (hDefaultCursor == NULL)
        return loadLastError("loading default cursor for window classes");

    ce = initUtilWindow(hDefaultIcon, hDefaultCursor);
    if (ce != NULL)
        return loadLastError(ce);

    if (registerWindowClass(hDefaultIcon, hDefaultCursor) == 0)
        return loadLastError("registering uiWindow window class");

    ZeroMemory(&ncm, sizeof (NONCLIENTMETRICSW));
    ncm.cbSize = sizeof (NONCLIENTMETRICSW);
    if (SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof (NONCLIENTMETRICSW), &ncm, sizeof (NONCLIENTMETRICSW)) == 0)
        return loadLastError("getting default fonts");
    hMessageFont = CreateFontIndirectW(&(ncm.lfMessageFont));
    if (hMessageFont == NULL)
        return loadLastError("loading default messagebox font; this is the default UI font");

    if (initContainer(hDefaultIcon, hDefaultCursor) == 0)
        return loadLastError("initializing uiMakeContainer() window class");

    if (SetConsoleCtrlHandler(consoleCtrlHandler, TRUE) == 0)
        return loadLastError("setting up console end session handler");

    hollowBrush = (HBRUSH) GetStockObject(HOLLOW_BRUSH);
    if (hollowBrush == NULL)
        return loadLastError("getting hollow brush");

    ZeroMemory(&icc, sizeof (INITCOMMONCONTROLSEX));
    icc.dwSize = sizeof (INITCOMMONCONTROLSEX);
    icc.dwICC = wantedICCClasses;
    if (InitCommonControlsEx(&icc) == 0)
        return loadLastError("initializing Common Controls");

    if (initDialogHelper(hDefaultIcon, hDefaultCursor) == 0)
        return loadLastError("initializing the dialog helper");

    hr = CoInitialize(NULL);
    if (hr != S_OK && hr != S_FALSE)
        return loadHRESULT("initializing COM", hr);
    // TODO initialize COM security
    // TODO (windows vista) turn off COM exception handling

    return NULL;
}