Форум программистов, компьютерный форум CyberForum.ru

Существуют ли какие-нибудь библиотеки C++ для работы с HTML - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
26.06.2014, 17:21     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #1
Подскажите пожалуйста, существуют ли какие-нибудь библиотеки С++ для работы с HTML (вывод формы из файла html, получение значений из полей, вообщем чтобы можно было написать форму на html, а работать из С++)? Само собой чтобы html выводился в графическое окно

Добавлено через 26 минут
Вроде нашел что можно как то подключить web-kit...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
27.06.2014, 20:47  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #21
Avazart, не явно.
Подключаешь htmlayout.lib которая с sdk идет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Катеринк@
 Аватар для Катеринк@
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 30
06.12.2014, 13:15     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #22
deniska91, вы разобрались как обрабатывать элементы управления html интерфейса?

Добавлено через 43 секунды
У меня сейчас просто та же проблема.. я смогла подключить интерфейс, а вот как получить контрол понять не могу...
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,645
Записей в блоге: 17
06.12.2014, 13:23     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #23
Тема актуальна, простого примера где к примеру создается одна кнопка и вешается на нее обработчик я не нашел.
Катеринк@
 Аватар для Катеринк@
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 30
06.12.2014, 14:08     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #24
Avazart, а не подскажете, почему вот так

C++
1
2
LPCWSTR Name = L"F:\\Рабочий стол\\Работа\\projects\\test_htmlayout\\Resourses\\index.html";
    HTMLayoutLoadFile(hMainWnd, Name);
интерфейс работает, а вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                        char Name[MAX_PATH];
    
                GetModuleFileNameA(NULL, Name, MAX_PATH);           
                
                for (int i = 0; i <= strlen(Name); i++)
                {
                    if (Name[i] == "\\")
                    {
                        Name[i] = "\\\\";
                    }
                }
 
                removeExe(Name);
                strcat(Name, "Resourses\\index.html");
                                
                HTMLayoutLoadFile(hMainWnd, Name);
не работает.

Добавлено через 2 минуты
упс.. не удалила цикл.. в общем без цикла последний код должен быть

C++
1
2
3
4
5
6
7
8
char Name[MAX_PATH];
    
                GetModuleFileNameA(NULL, Name, MAX_PATH);           
                                
                removeExe(Name);
                strcat(Name, "Resourses\\index.html");
                                
                HTMLayoutLoadFile(hMainWnd, Name);
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
06.12.2014, 18:27  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #25
Простейший пример работы с HTMLayout:

1. Создаем пустой Win32 проект.
2. Создаем окно
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <Windows.h>
 
LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
 
int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    WNDCLASSEX mainWindow;
 
    memset( &mainWindow, 0, sizeof( WNDCLASSEX ));
 
    mainWindow.cbSize        = sizeof( WNDCLASSEX );
    mainWindow.hbrBackground = ( HBRUSH )GetStockObject( WHITE_BRUSH );
    mainWindow.hCursor       = LoadCursor( NULL, IDC_ARROW );
    mainWindow.hInstance     = hInstance;
    mainWindow.lpfnWndProc   = WindowProc;
    mainWindow.lpszClassName = _T( "Example" );
 
    RegisterClassEx( &mainWindow );
 
    HWND hWnd = CreateWindowEx( NULL, mainWindow.lpszClassName, _T( "Example" ), WS_VISIBLE | WS_OVERLAPPEDWINDOW, \
                                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, \
                                HWND_DESKTOP, NULL, hInstance, 0 );
 
    if ( NULL == hWnd )
    {
        MessageBox( NULL, _T( "Error creating window" ), _T( "Error" ), MB_OK );
        return EXIT_FAILURE;
    }
 
    MSG uMsg;
    BOOL bRet;
    while( 0 != ( bRet = GetMessage( &uMsg, NULL, 0, 0 )))
    {
        if ( -1 == bRet )
        {
            return EXIT_FAILURE;
        }
        else    
        {
            TranslateMessage( &uMsg );
            DispatchMessage( &uMsg );
        }
    }
    
    return uMsg.wParam;
}
 
LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch( uMsg )
    {
        case WM_CREATE:
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
    }
    return DefWindowProc( hWnd, uMsg, wParam, lParam );
}


3. Подключаем библиотеку HTMLayout и создаем структуру обработки событий
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <HTMLayout\htmlayout.h>
#pragma comment ( lib, "HTMLayout.lib" )
 
struct DOMEventsHandlerType: htmlayout::event_handler
{
      DOMEventsHandlerType(): event_handler( 0xFFFFFFFF ) {}
      virtual BOOL handle_event ( HELEMENT he, BEHAVIOR_EVENT_PARAMS& params ) 
      { 
        switch( params.cmd )
        {
        case BUTTON_CLICK:              break; // click on button   
        case BUTTON_PRESS:              break;// mouse down or key down in button
        case BUTTON_STATE_CHANGED:      break;
        case EDIT_VALUE_CHANGING:       break;// before text change
        case EDIT_VALUE_CHANGED:        break;//after text change
        case SELECT_SELECTION_CHANGED:  break;// selection in <select> changed
        case SELECT_STATE_CHANGED:      break;// node in select expanded/collapsed, heTarget is the node
        case POPUP_REQUEST: 
                                        break;// request to show popup just received, 
                                              //     here DOM of popup element can be modifed.
        case POPUP_READY:               break;// popup element has been measured and ready to be shown on screen,
                                              //     here you can use functions like ScrollToView.
        case POPUP_DISMISSED:           break;// popup element is closed,
                                              //     here DOM of popup element can be modifed again - e.g. some items can be removed
                                              //     to free memory.
        case MENU_ITEM_ACTIVE:                // menu item activated by mouse hover or by keyboard
             break;
        case MENU_ITEM_CLICK:                 // menu item click 
             break;
 
 
            // "grey" event codes  - notfications from behaviors from this SDK 
        case HYPERLINK_CLICK:           break;// hyperlink click
        case TABLE_HEADER_CLICK:        break;// click on some cell in table header, 
                                              //     target = the cell, 
                                              //     reason = index of the cell (column number, 0..n)
        case TABLE_ROW_CLICK:           break;// click on data row in the table, target is the row
                                              //     target = the row, 
                                              //     reason = index of the row (fixed_rows..n)
        case TABLE_ROW_DBL_CLICK:       break;// mouse dbl click on data row in the table, target is the row
                                              //     target = the row, 
                                              //     reason = index of the row (fixed_rows..n)
 
        case ELEMENT_COLLAPSED:         break;// element was collapsed, so far only behavior:tabs is sending these two to the panels
        case ELEMENT_EXPANDED:          break;// element was expanded,
 
        }
        return FALSE; 
      }
 
} DOMEventsHandler;


4. Подцепляем HTMLayout к созданному окну в callback-функции WindowProc
C++
1
2
3
BOOL bHandled;
LRESULT lResult = HTMLayoutProcND( hWnd, uMsg, wParam, lParam, &bHandled );
if ( 0 != bHandled ) return lResult;
5. Аттачим структуру обработки событий при событии WM_CREATE и заодно подгружаем страницу:
C++
1
2
htmlayout::attach_event_handler(hWnd, &DOMEventsHandler);
HTMLayoutLoadFile( hWnd, _T( "Тут путь к файлу html" ));
6. После всего этого, мы сможем в структуре DOMEventsHandlerType отлавливать сообщения загруженной html страницы. Однако, есть некоторые нюансы, например, чтобы отлавливать нажатие на элемент div, этому элементу в стиле нужно добавить псевдо-стиль behavior:button; Это придает элементу div свойства кнопки
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
06.12.2014, 18:28  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #26
Вот простой пример нажатия кнопки
Сначала код html страницы:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<html>
<head>
<style>
#myButton{
    behavior: button;
    width: 100px;
    height: 30px;
    text-align:center;
    line-height: 30px;
    background-color: #BABABA;
    color: #434343;
    border: 1px solid #0D0D0D;
    cursor: pointer;
}
#myButton:hover{
    color: #222222;
}
#myButton:active{
    font-weight: bold;
}
</style>
</head>
<body>
<div id = "myButton">Click me</div>
</body>
</html>


И полный С++ код (сделал для простоты все в одном cpp файле)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <HTMLayout\htmlayout.h>
#include <tchar.h>
#include <Windows.h>
 
#pragma comment ( lib, "HTMLayout.lib" )
 
LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
 
struct DOMEventsHandlerType: htmlayout::event_handler
{
      DOMEventsHandlerType(): event_handler( 0xFFFFFFFF ) {}
      virtual BOOL handle_event ( HELEMENT he, BEHAVIOR_EVENT_PARAMS& params ) 
      { 
        switch( params.cmd )
        {
        case BUTTON_CLICK: 
        {// click on button        
            htmlayout::dom::element el = params.heTarget;
            HWND hWnd = el.get_element_hwnd( true );
            if ( !wcscmp( el.get_attribute( "id" ), _T( "myButton" )))
                MessageBox( hWnd, _T( "You click on the button" ), _T( "Message" ), MB_OK );
            break;
        }   
        case BUTTON_PRESS:              break;// mouse down or key down in button
        case BUTTON_STATE_CHANGED:      break;
        case EDIT_VALUE_CHANGING:       break;// before text change
        case EDIT_VALUE_CHANGED:        break;//after text change
        case SELECT_SELECTION_CHANGED:  break;// selection in <select> changed
        case SELECT_STATE_CHANGED:      break;// node in select expanded/collapsed, heTarget is the node
        case POPUP_REQUEST: 
                                        break;// request to show popup just received, 
                                              //     here DOM of popup element can be modifed.
        case POPUP_READY:               break;// popup element has been measured and ready to be shown on screen,
                                              //     here you can use functions like ScrollToView.
        case POPUP_DISMISSED:           break;// popup element is closed,
                                              //     here DOM of popup element can be modifed again - e.g. some items can be removed
                                              //     to free memory.
        case MENU_ITEM_ACTIVE:                // menu item activated by mouse hover or by keyboard
             break;
        case MENU_ITEM_CLICK:                 // menu item click 
             break;
 
 
            // "grey" event codes  - notfications from behaviors from this SDK 
        case HYPERLINK_CLICK:           break;// hyperlink click
        case TABLE_HEADER_CLICK:        break;// click on some cell in table header, 
                                              //     target = the cell, 
                                              //     reason = index of the cell (column number, 0..n)
        case TABLE_ROW_CLICK:           break;// click on data row in the table, target is the row
                                              //     target = the row, 
                                              //     reason = index of the row (fixed_rows..n)
        case TABLE_ROW_DBL_CLICK:       break;// mouse dbl click on data row in the table, target is the row
                                              //     target = the row, 
                                              //     reason = index of the row (fixed_rows..n)
 
        case ELEMENT_COLLAPSED:         break;// element was collapsed, so far only behavior:tabs is sending these two to the panels
        case ELEMENT_EXPANDED:          break;// element was expanded,
 
        }
        return FALSE; 
      }
 
} DOMEventsHandler;
 
 
 
int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    WNDCLASSEX mainWindow;
 
    memset( &mainWindow, 0, sizeof( WNDCLASSEX ));
 
    mainWindow.cbSize        = sizeof( WNDCLASSEX );
    mainWindow.hbrBackground = ( HBRUSH )GetStockObject( WHITE_BRUSH );
    mainWindow.hCursor       = LoadCursor( NULL, IDC_ARROW );
    mainWindow.hInstance     = hInstance;
    mainWindow.lpfnWndProc   = WindowProc;
    mainWindow.lpszClassName = _T( "Example" );
 
    RegisterClassEx( &mainWindow );
 
    HWND hWnd = CreateWindowEx( NULL, mainWindow.lpszClassName, _T( "Example" ), WS_VISIBLE | WS_OVERLAPPEDWINDOW, \
                                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, \
                                HWND_DESKTOP, NULL, hInstance, 0 );
 
    if ( NULL == hWnd )
    {
        MessageBox( NULL, _T( "Error creating window" ), _T( "Error" ), MB_OK );
        return EXIT_FAILURE;
    }
 
    MSG uMsg;
    BOOL bRet;
    while( 0 != ( bRet = GetMessage( &uMsg, NULL, 0, 0 )))
    {
        if ( -1 == bRet )
        {
            return EXIT_FAILURE;
        }
        else    
        {
            TranslateMessage( &uMsg );
            DispatchMessage( &uMsg );
        }
    }
    
    return uMsg.wParam;
}
 
LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    BOOL bHandled;
    LRESULT lResult = HTMLayoutProcND( hWnd, uMsg, wParam, lParam, &bHandled );
    if ( 0 != bHandled ) return lResult;
 
    switch( uMsg )
    {
        case WM_CREATE:
            htmlayout::attach_event_handler(hWnd, &DOMEventsHandler);
 
            HTMLayoutLoadFile( hWnd, _T( "D:\\Projects\\C++\\Lessons\\HTMLayout\\Example\\index.html" ));
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
    }
    return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
Катеринк@
 Аватар для Катеринк@
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 30
07.12.2014, 12:32     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #27
deniska91, спасибо большое! я про структуру ничего не знала, с этим вы мне ооочень помогли!
а вы не пробовали вместо пути
C++
1
HTMLayoutLoadFile( hWnd, _T( "Тут путь к файлу html" ));
писать переменную, в которую вы будете находить путь. Это же намного удобнее, если проект нужно перенести на другую машину. Я так пыталась сделать, но не получается отобразить интерфейс, хотя в переменную записывается правильный путь.
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
07.12.2014, 22:01  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #28
Катеринк@, у себя в программе я все HTML страницы загонял в файл ресурсов, который подключал к программе.

Полный путь я привел в примере для простоты
Катеринк@
 Аватар для Катеринк@
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 30
07.12.2014, 22:30     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #29
deniska91, спасибо я совсем затупила.. с самого начала его в ресурсы положила, а использовать почему-то не захотела
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
07.12.2014, 23:22  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #30
Катеринк@, если будете загружать файл из ресурсов, тогда воспользуйтесь следующим кодом
C++
1
2
3
4
5
6
7
HRSRC hRes;
hRes = FindResource( NULL, /*Тут имя ресурса*/, RT_RCDATA );
HMODULE hMod = GetModuleHandle( NULL );
HGLOBAL hGlob = LoadResource( hMod, hRes );
BYTE* lpbArray = ( BYTE* )LockResource( hGlob );
HTMLayoutLoadHtml( hWnd, lpbArray, SizeofResource( hMod, hRes ));
FreeResource( hGlob );
Катеринк@
 Аватар для Катеринк@
1 / 1 / 0
Регистрация: 10.04.2011
Сообщений: 30
07.12.2014, 23:31     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #31
deniska91, а я вот так сделала
C++
1
2
LPCWSTR Name = L"index.htm";
HTMLayoutLoadFile(hMainWnd, Name);
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,645
Записей в блоге: 17
17.07.2016, 21:45     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #32
Народ а кто-то разбирался со Sciter (производным от HTMLayout)?
Есть опыт/примеры какие нибудь ссылки на блоги идр что бы быстрее разобраться?
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
19.07.2016, 05:25     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #33
После нескольких месяцев разработки увидел свет первый релиз быстрого и самодостаточного HTML парсера MyHTML. Код написан на языке Си и распространяется под лицензией LGPL v2.1. На основе данного проекта разрабатывается рендер HTML, написанный на "голом" Си без зависимостей, способный формировать результирующий образ страниц без использования движков, подобных WebKit и Gecko.

Есть статья на хабре. Парсер выдает дерево элементов, по этому дереву строй форму в си
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11846 / 6825 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
19.07.2016, 05:38     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #34
Цитата Сообщение от Avazart Посмотреть сообщение
Народ а кто-то разбирался со Sciter (производным от HTMLayout)?
Пару дней назад смотрел доки,
пока еще добром ничего не вкурил.
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,645
Записей в блоге: 17
19.07.2016, 10:48     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #35
Как то муторно устроено.

C++
1
2
3
4
5
  class window : public aux::asset
               , public sciter::host<window>
               , public sciter::event_handler
  {
  }
Т.е. тот же наследование event_handler
назначение aux::asset , sciter::host<window> пока загадка (подозреваю что первый связан с отладкой,второй с загрузкой ресурсов)

Тоже прикрепление объекта обработчика посредством:

C++
1
attach_dom_event_handler(HWINDOW hwnd, event_handler* ph)
Фильтрация происходит в методе:
C++
1
2
3
4
5
virtual bool on_script_call(HELEMENT he, 
    LPCSTR name, 
    UINT argc, 
    sciter::value* argv, 
    sciter::value& retval)
Только для удобства добавлены макросы которые разворачиваются в эту фильтрацию, получаем как декларирование методов которые могут вызываться изнутри движка в tiscript-е:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  class frame: public sciter::window 
{
public:
  frame() : window(SW_TITLEBAR | SW_RESIZEABLE | SW_CONTROLS | SW_MAIN | SW_ENABLE_DEBUG) {}
 
 
    json::value on_btn_click() 
    {
         MessageBox(get_hwnd(), L"Click!",L"Test",  MB_OK); 
         return json::value();
    }
 
   BEGIN_FUNCTION_MAP
     FUNCTION_0("on_btn_click", on_btn_click);
     // еще  FUNCTION_1 (... ) итд...
   END_FUNCTION_MAP
};
А в html с помощью tiscript нужно создать обработчик и навесит на кнопку


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
</head>
<body>
        <script type="text/tiscript">
        function on_click() 
        { 
                 view.on_btn_click();  
        } 
    
        $(input#MyButton).on("click", on_click);
        </script>   
 
        <input type="button" id="MyButton" name="test_button" value="Test button">
</body>
</html>
view.on_btn_click(); это вызов нашего С++ метода on_btn_click декларированного FUNCTION_0("on_btn_click", on_btn_click);

В итоге при нажатии на кнопку в окне, мы получим мессаджбокс.

Движок использует tiscript поэтому синтаксис "навешивания" отличается от обычного js
Javascript
1
$(input#MyButton).on("click", on_click);
Т.е. то как описано тут http://javascript.ru/tutorial/events/intro не работает.

Не по теме:

И непонятно можно ли сделать проще что-то типа:

Javascript
1
$(input#MyButton).on("click",view.on_btn_click);



Кстати public sciter::window это класс обвертка находящийся в

Bash
1
2
sciter-sdk\include\sciter-x-window.hpp
sciter-sdk\include\sciter-win-main.cpp

Не по теме:

Спрашивается что делает сpp в include ?



Этот класс используетcя в примере sciter-sdk\demos\uminimal
Это класс создает окно с помощью CreateWindow() и делает необходимые связки

C++
1
2
3
4
5
6
7
8
9
  window::window( UINT creationFlags, RECT frame): _hwnd(NULL)
  {
    _hwnd = ::SciterCreateWindow(creationFlags,&frame,&msg_delegate,this,NULL);
    if( _hwnd ) {
      add_ref();
      setup_callback();
      sciter::attach_dom_event_handler(get_hwnd(),this);
    }
  }
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11846 / 6825 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
19.07.2016, 10:49     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #36
Цитата Сообщение от Avazart Посмотреть сообщение
Как то муторно устроено.
И доки какие-то глупенькие, имхо...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2016, 13:17     Существуют ли какие-нибудь библиотеки C++ для работы с HTML
Еще ссылки по теме:

Существуют ли библиотеки UPnP C++
Какие есть GUI библиотеки для c++ C++
C++ Какие есть библиотеки для распаковки zip файлов?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,645
Записей в блоге: 17
19.07.2016, 13:17     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #37
Цитата Сообщение от Croessmah Посмотреть сообщение
И доки какие-то глупенькие, имхо...
Меня примеры удивляют.
Казалось бы должны быть от простого к сложному, там обзор по контроллам, куча непонятного кода.
Названия папок demos и samples и гадай... оказывается в первом c++ во втором html-ки

Не по теме:

Я еще буквально сразу нарвался на такой код исходниках

C++
1
typedef std::runtime_error script_error;
Как то не хорошо тайпдефить исключения.



Добавлено через 18 минут
Можно кстати проще скрипт написать
Javascript
1
2
3
4
5
6
        <script type="text/tiscript">   
        $(input#MyButton).onClick= function() 
        {
          view.on_btn_click();  
        }
        </script>
Добавлено через 1 час 30 минут
Я попытался содрать "красивую" кнопку от сюда http://shpargalkablog.ru/2012/04/css-knopki.html#on

a.button24
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a.button24 {
  display: inline-block;
  color: white;
  text-decoration: none;
  padding: .5em 2em;
  outline: none;
  border-width: 2px 0;
  border-style: solid none;
  border-color: #FDBE33 #000 #D77206;
  border-radius: 6px;
  background: linear-gradient(#F3AE0F, #E38916) #E38916;
  transition: 0.2s;
} 
a.button24:hover { background: linear-gradient(#f5ae00, #f59500) #f5ae00; }
a.button24:active { background: linear-gradient(#f59500, #f5ae00) #f59500; }


Тупо скопипастить не вышло - градиенты имеют другой синтаксис:

style.css
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
html  
{ 
   background: threedface /* buttonface не поддерживается? [url]http://webdesign.about.com/od/colorcharts/l/blsystemcolors.htm*/;[/url]
   font:system; 
}
 
a.a_button{
  display: inline-block;
  color: white;
  text-decoration: none;
  padding: .5em 2em;
  outline: none;
  border-width: 2px 0;
  border-style: solid none;
  
  border-radius: 6px; 
  transition: 0.2s;
  
  border-color: #E38916;
  background:  linear-gradient(top,#F3AE0F, #E38916); 
} l
a.a_button:hover  { background: linear-gradient(top,#f5ae00, #f59500) ; border-color:  #f5ae00; }
a.a_button:active { background: linear-gradient(top,#f59500, #f5ae00);  border-color: #f59500; }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
    <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
    <script type="text/tiscript">   
        $(a.a_button).onClick= function() { view.on_btn_click(); }
    </script>   
 
   <a href="#" class="a_button">кнопка</a>  
</body>
</html>
Как я понимаю еще не работает градиент по диагоналям:
CSS
1
linear-gradient(to top right, red, white, blue)
Добавлено через 18 минут
А вот "наклонный" градиент иначе задается (см sciter-sdk/samples/basics/*)

CSS
1
2
3
4
5
6
7
 @const START: rgb(255,0,0);
 @const END: rgba(0,0,255,0.5);
 
a.a_button
{
   background: linear-gradient(25% 25%, 45deg, @START, @END);
}
Yandex
Объявления
19.07.2016, 13:17     Существуют ли какие-нибудь библиотеки C++ для работы с HTML
Ответ Создать тему
Опции темы

Текущее время: 13:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru