c++ - Awesomium WebView doesn't display page -


i've made 2 simple classes use displaying uis awesomium. creating awesomium webview , setting parent window win32 window causes program hang , page never displayed. classes simple , creating window simple there isn't can think of going wrong. perhaps there else required i've done display webview?

to clarify: creating win32 window without creating webview works fine, window functions including drag code etc... hang happens when call set_parent_window.

ui.h

#pragma once #include <windows.h> #include <windowsx.h> #include <awesomium/webcore.h> #include <awesomium/stlhelpers.h>  using namespace awesomium;  lresult callback loginuicallback(hwnd hwnd, uint message, wparam wparam, lparam lparam);  class ui { public:     //window variables     hinstance instance;     hwnd window;     bool drag_window = false;     short mouse_x, mouse_y, mouse_x_prev, mouse_y_prev;      //awesomium variables     webcore* webcore = 0;     webview* webview;      static hwnd initwindow(int width, int height, wndproc callback)     {         hwnd hwnd;          wndclassex wc;         wc.cbsize = sizeof(wndclassex);         wc.style = 0;         wc.lpfnwndproc = callback;         wc.cbclsextra = 0;         wc.cbwndextra = 0;         wc.hinstance = getmodulehandle(0);         wc.hicon = loadicon(null, idi_application);         wc.hcursor = loadcursor(null, idc_arrow);         wc.hbrbackground = (hbrush)(color_window + 1);         wc.lpszmenuname = null;         wc.lpszclassname = "myui";         wc.hiconsm = loadicon(null, idi_application);          if (!registerclassex(&wc))         {             char msg[100];             sprintf(msg, "system error: %i", getlasterror());             messagebox(null, msg, "error", mb_ok);             return null;         }          hwnd = createwindow("myui",             "",             ws_popup,             cw_usedefault,             cw_usedefault,             width,             height,             null,             null,             getmodulehandle(0),             null);          if (!hwnd)         {             char msg[100];             sprintf(msg, "system error: %i", getlasterror());             messagebox(null, msg, "error", mb_ok);             return null;         }           showwindow(hwnd, sw_shownormal);         updatewindow(hwnd);         settimer(hwnd, 0, 15, null);          return hwnd;     } };  class loginui : public ui { public:     int width = 600;     int height = 600;      int runui()     {         this->window = ui::initwindow(this->width, this->height, ::loginuicallback);          if (!this->window)             return 0;          webconfig config;         this->webcore = webcore::initialize(config);         this->webview = this->webcore->instance()->createwebview(this->width, this->height, 0, kwebviewtype_window);         this->webview->set_parent_window(this->window);         this->webview->loadurl(weburl(wslit("http://www.google.com")));          msg msg;         while(getmessage(&msg, this->window, 0, 0))         {             translatemessage(&msg);             dispatchmessage(&msg);         }          webcore::shutdown();          return 1;     } }login_ui;  lresult callback loginuicallback(hwnd hwnd, uint message, wparam wparam, lparam lparam) {     switch (message)     {         case wm_command:             return defwindowproc(hwnd, message, wparam, lparam);             break;         case wm_timer:             break;         case wm_mousemove:         {             if (login_ui.drag_window && (wparam & mk_lbutton))             {                 // code executed when dialog window moved around on screen                 rect win_rect;                 getwindowrect(hwnd, &win_rect);                 int x_coord = get_x_lparam(lparam);                 int y_coord = get_y_lparam(lparam);                 movewindow(hwnd,                     win_rect.left + x_coord - login_ui.mouse_x_prev,                     win_rect.top + y_coord - login_ui.mouse_y_prev,                     win_rect.right - win_rect.left,                     win_rect.bottom - win_rect.top,                     false                     );             }             break;         }         case wm_lbuttondown:         {             login_ui.mouse_x = get_x_lparam(lparam);             login_ui.mouse_y = get_y_lparam(lparam);             if (login_ui.mouse_y < 41)             {                 login_ui.mouse_x_prev = login_ui.mouse_x;                 login_ui.mouse_y_prev = login_ui.mouse_y;                 setcapture(hwnd);                 login_ui.drag_window = true;             }             break;         }         case wm_lbuttonup:         {             if (login_ui.drag_window)             {                 login_ui.drag_window = false;                 releasecapture();             }             break;         }         case wm_size:             break;         case wm_destroy:             postquitmessage(0);             break;         case wm_quit:             break;         default:             return defwindowproc(hwnd, message, wparam, lparam);     }     return 0; } 

main.cpp

#include "ui.h"  int apientry winmain(hinstance hinstance, hinstance, char*, int ncmdshow) {     login_ui.runui(); } 

have not used awesomium getmessage pumps messages webcore window. instead should pass null message pump dispatches messages windows created on thread.


Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -