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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
#1

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

26.06.2014, 17:21. Просмотров 2841. Ответов 47
Метки нет (Все метки)

Подскажите пожалуйста, существуют ли какие-нибудь библиотеки С++ для работы с HTML (вывод формы из файла html, получение значений из полей, вообщем чтобы можно было написать форму на html, а работать из С++)? Само собой чтобы html выводился в графическое окно

Добавлено через 26 минут
Вроде нашел что можно как то подключить web-kit...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2014, 17:21     Существуют ли какие-нибудь библиотеки C++ для работы с HTML
Посмотрите здесь:
Какие есть библиотеки для работы с MYSQL C++
Для работы с методом fopen(filename, "rb"); какие библиотеки нужно подключать? C++
Какие существуют способы выделения памяти для переменных? C++
C++ Какие существуют короткие константы для достаточно больших чисел?
C++ Какие нужны библиотеки для создания читов для онлайн игр?
Какие есть GUI библиотеки для c++ C++
C++ Фоторобот на С++: какие библиотеки для этого потребуются
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
27.06.2014, 00:55  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #16
Спасибо друзья! Буду разбираться, потом отпишусь если у меня получится!
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
27.06.2014, 01:47     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #17
Можно кстати спросить Убежденный, может у него есть опыт использования HTMLayout

Добавлено через 26 минут
Исходники тут http://www.terrainformatica.com/htmlayout/ нашел, справа есть "SDK - WTL/MFC/Win32"

Справка http://www.terrainformatica.com/html...doc/index.html
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
27.06.2014, 10:43  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #18
Avazart, да, я уже этот сайт (кстати на форуме rsdn даже есть отдельный раздел про HTMLayout) весь перерыл в поисках инфы, скачал SDK, даже смог запустить и отобразить на экран. Осталось только научиться обрабатывать сообщения.
DrOffset
7062 / 4203 / 949
Регистрация: 30.01.2014
Сообщений: 6,969
27.06.2014, 12:03     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #19
Цитата Сообщение от deniska91 Посмотреть сообщение
кстати на форуме rsdn даже есть отдельный раздел про HTMLayout
Более того, разработчика этой библиотеки можно найти там же. Правда, я думаю, не стоит ему задавать элементарные вопросы, но если что-то серьезное, то можно спросить лично
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
27.06.2014, 16:36     Существуют ли какие-нибудь библиотеки C++ для работы с HTML #20
Взялся разбирать исходники, ибо чет "быстрого старта я не нашел".
Не могу понять как htmlayout.dll грузится в приложение явно или не явно?
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
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 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, спасибо я совсем затупила.. с самого начала его в ресурсы положила, а использовать почему-то не захотела
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2014, 23:22     Существуют ли какие-нибудь библиотеки C++ для работы с HTML
Еще ссылки по теме:
Какие есть библиотеки для парсинга JSON? C++
C++ Какие есть библиотеки для распаковки zip файлов?
Какие стандартные библиотеки нужно изучать для программирования c++? C++
Существуют ли библиотеки UPnP C++
C++ Какие библиотеки использывать для функций textcolor, textbackground и clrscr в ms visual c++?

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

Или воспользуйтесь поиском по форуму:
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 );
Yandex
Объявления
07.12.2014, 23:22     Существуют ли какие-нибудь библиотеки C++ для работы с HTML
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru