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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Консольная игра не соответствует требованиям http://www.cyberforum.ru/cpp-beginners/thread1217656.html
Здравствуйте. Есть определенное описание текстовой консольной "игры", и вот такие требования: 1. Источником информации для нее служит текстовый файл определенной структуры (xml, json, что-то свое, что угодно еще), которую необходимо создать разработчику. 2. в каждой локации существует список действий, который представляет из себя заранее заданные варианты, показываемые игроку; 3. при выборе...
C++ Куча непонятных ошибок Вот код: #include "stdafx.h" #include <iostream> #include <fstream> int main() { std::ifstream ifs("test.txt", std::ifstream::in); char c = ifs.get(); http://www.cyberforum.ru/cpp-beginners/thread1217651.html
C++ Как определить тип данных потока istream
создал класс, перегрузил оператор ввода istream & operator >>(istream& in, Stack& cl){ } дальше нужно передать данные в нужную функцию, вопрос, как определить введённый тип данных?
C++ Условная компиляция с массивом
Вообще с помощью условной компиляции надо сравнить первые три ячейки массива с такими номерами -050,093,098,065, если подходят то хорошо. Примеров нет в интернет, кто может сделать? Заранее благодарен. #include <iostream> using namespace std; //050,093,098,065 //#if tel void main(){
C++ Записать в файл g все числа из заданного массива, кратные 3; найти ошибки в коде http://www.cyberforum.ru/cpp-beginners/thread1217604.html
Задача следующая: Создать файл f, содержащий одномерный массив из 10 целых чисел. Записать в файл g все числа из этого массива, кратные 3. После введения элементов массива вылетает ошибка такого содержания:"Project Project2.exe raised exception class EAccessViolation with message 'Access violation at address 32665А01 . Read of address F7C842A4' Process stopped". Останавливается на этой строке:...
C++ Ранжирование двустрочной таблицы, состоящей из цифр Нужно организовать ранжирование двустрочной таблицы, состоящей из цифр. Помогите пожалуйста. Не знаю даже как начать это делать подробнее

Показать сообщение отдельно
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
06.12.2014, 18:27  [ТС]     Существуют ли какие-нибудь библиотеки C++ для работы с HTML
Простейший пример работы с 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 свойства кнопки
 
Текущее время: 19:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru