platform_display_type insert<group_t>(display_t&             display,
                                             platform_display_type& parent,
                                             group_t&        element)
{
    HWND parent_hwnd(parent);

    element.control_m = ::CreateWindowExW(WS_EX_CONTROLPARENT | WS_EX_COMPOSITED | WS_EX_TRANSPARENT,
                                          L"BUTTON",
                                          hackery::convert_utf(element.name_m).c_str(),
                                          WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
                                          0, 0, 10, 10,
                                          parent_hwnd,
                                          0,
                                          ::GetModuleHandle(NULL),
                                          NULL);

    if (element.control_m == NULL)
        ADOBE_THROW_LAST_ERROR;

    set_font(element.control_m, BP_GROUPBOX);

    ::SetWindowSubclass(element.control_m, &group_subclass_proc, reinterpret_cast<UINT_PTR>(&element), 0);

    return display.insert(parent, element.control_m);
}
예제 #2
0
platform_display_type insert<display_number_t>(display_t& display,
                                             platform_display_type& parent,
                                             display_number_t& element)
{
    HWND parent_hwnd(parent);
    element.initialize(parent_hwnd);
    return display.insert(parent, get_display(element));
}
platform_display_type insert<checkbox_t>(display_t&             display,
                                                platform_display_type& parent,
                                                checkbox_t&     element)
{
    HWND parent_hwnd(parent);

    initialize(element, parent_hwnd);

    return display.insert(parent, element.control_m);
}
예제 #4
0
platform_display_type insert<tab_group_t>(display_t&             display,
        platform_display_type&  parent,
        tab_group_t&     element)
{
    HWND parent_hwnd(parent);

    element.initialize(parent_hwnd);

    return display.insert(parent, element.control_m);
}
platform_display_type insert<link_t>(display_t&             display,
                                            platform_display_type& parent,
                                            link_t&         element)
{
    HWND parent_hwnd(parent);

    element.control_m = ::CreateWindowExW(WS_EX_COMPOSITED, L"STATIC",
                                          NULL,
                                          WS_CHILD | WS_VISIBLE,
                                          0, 0, 50, 50,
                                          parent_hwnd,
                                          0,
                                          ::GetModuleHandle(NULL),
                                          NULL);

    if (element.control_m == NULL)
        ADOBE_THROW_LAST_ERROR;

    if (!element.alt_text_m.empty())
        implementation::set_control_alt_text(element.control_m, element.alt_text_m);

    ::SetWindowSubclass(element.control_m, link_subclass_proc, reinterpret_cast<UINT_PTR>(&element), 0);

    element.link_icon_m = ::CreateWindowExW(WS_EX_COMPOSITED | WS_EX_TRANSPARENT, L"STATIC",
                                            NULL,
                                            WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_NOTIFY,
                                            0, 0, 9, 16,
                                            parent_hwnd,
                                            0,
                                            ::GetModuleHandle(NULL),
                                            NULL);

    if (element.link_icon_m == NULL)
        ADOBE_THROW_LAST_ERROR;
    ::SendMessage(element.link_icon_m, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) link_bitmap());

    display.insert(parent, element.link_icon_m);

    return display.insert(parent, element.control_m);
}
예제 #6
0
platform_display_type insert<panel_t>(display_t&             display,
                                             platform_display_type&  parent,
                                             panel_t&     element)
{
    HWND parent_hwnd(parent);

    assert(!element.control_m);

    element.control_m = ::CreateWindowEx(   WS_EX_CONTROLPARENT | WS_EX_COMPOSITED,
                    _T("eve_panel"),
                    NULL,
                    WS_CHILD | WS_VISIBLE,
                    0, 0, 10, 10,
                    parent_hwnd,
                    0,
                    ::GetModuleHandle(NULL),
                    NULL);

    if (element.control_m == NULL)
        ADOBE_THROW_LAST_ERROR;

    return display.insert(parent, element.control_m);
}
platform_display_type insert<separator_t>(display_t&             display,
                                                 platform_display_type&  parent,
                                                 separator_t&     element)
{
    HWND parent_hwnd(parent);

    assert(!element.control_m);

    element.control_m = ::CreateWindowEx(WS_EX_COMPOSITED,
                                         WC_STATIC,
                                         NULL,
                                         WS_CHILD | WS_VISIBLE | SS_ETCHEDFRAME,
                                         0, 0, 10, 10,
                                         parent_hwnd,
                                         0,
                                         ::GetModuleHandle(NULL),
                                         NULL);

    if (element.control_m == NULL)
        ADOBE_THROW_LAST_ERROR;

    return display.insert(parent, element.control_m);
}