DevCpp встраивание браузера в форму

Гобелен - кликните для возврата на главную

Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.

Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Жладимира Вольфовича Жириновского.

Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

Код приведённый ниже запускается, при этом не видно где выводится текст из HTML, возможно это связано с размерами вставленного браузера или его расположением на форме.

C++
    
#include <windows.h>
#include <exdisp.h>
#include <mshtml.h>
#include <initguid.h>
      
// Объявление GUID через макрос (правильный способ для MinGW)
DEFINE_GUID(CLSID_WebBrowser, 
    0x8856F961,0x340A,0x11D0,0xA9,0x6B,0x00,0xC0,0x4F,0xD7,0x05,0xA2);
DEFINE_GUID(IID_IWebBrowser2, 
    0xD30C1661,0xCDAF,0x11D0,0x8A,0x3E,0x00,0xC0,0x4F,0xC9,0xE2,0x6E);
      
IWebBrowser2* pBrowser = NULL;
      
void CreateWebBrowser(HWND hWnd) {
    CoInitialize(NULL);
    
    // Правильный вызов для MinGW (без & перед GUID)
    HRESULT hr = CoCreateInstance(
        CLSID_WebBrowser,  // Без &
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_IWebBrowser2,  // Без &
        (void**)&pBrowser
    );
      
    if (SUCCEEDED(hr) && pBrowser) {
        RECT rc;
        GetClientRect(hWnd, &rc);
        pBrowser->put_Left(0);
        pBrowser->put_Top(0);
        pBrowser->put_Width(rc.right);
        pBrowser->put_Height(rc.bottom);
        pBrowser->put_Visible(VARIANT_TRUE);
        
        BSTR bstrHTML = SysAllocString(L"<html><body><h1>Working!</h1></body></html>");
        VARIANT varURL;
        VariantInit(&varURL);
        varURL.vt = VT_BSTR;
        varURL.bstrVal = SysAllocString(L"about:blank");
        
        pBrowser->Navigate2(&varURL, NULL, NULL, NULL, NULL);
        
        IDispatch* pDisp = NULL;
        if (SUCCEEDED(pBrowser->get_Document(&pDisp)) && pDisp) {
            IHTMLDocument2* pDoc = NULL;
            if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc)) && pDoc) {
                SAFEARRAY* psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);
                if (psa) {
                    VARIANT* pVar;
                    if (SUCCEEDED(SafeArrayAccessData(psa, (void**)&pVar))) {
                        pVar->vt = VT_BSTR;
                        pVar->bstrVal = bstrHTML;
                        SafeArrayUnaccessData(psa);
                        pDoc->write(psa);
                    }
                    SafeArrayDestroy(psa);
                }
                pDoc->Release();
            }
            pDisp->Release();
        }
        
        SysFreeString(bstrHTML);
        VariantClear(&varURL);
    }
}
      
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
    switch (msg) {
        case WM_CREATE:
            CreateWebBrowser(hWnd);
            break;
        case WM_SIZE:
            if (pBrowser) {
                RECT rc;
                GetClientRect(hWnd, &rc);
                pBrowser->put_Width(rc.right);
                pBrowser->put_Height(rc.bottom);
            }
            break;
        case WM_DESTROY:
            if (pBrowser) {
                pBrowser->Quit();
                pBrowser->Release();
                pBrowser = NULL;
            }
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}
      
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASS wc = {0};
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = "WebBrowserHost";
    RegisterClass(&wc);
      
    HWND hWnd = CreateWindow("WebBrowserHost", "WebBrowser Demo",
                            WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
                            800, 600, NULL, NULL, hInstance, NULL);
      
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
      
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
      
    CoUninitialize();
    return (int)msg.wParam;
}

  

Другие товары

Вы так же можете прочитать следующие статьи: