本文整理汇总了C++中NativeWindow::GetBrowser方法的典型用法代码示例。如果您正苦于以下问题:C++ NativeWindow::GetBrowser方法的具体用法?C++ NativeWindow::GetBrowser怎么用?C++ NativeWindow::GetBrowser使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NativeWindow
的用法示例。
在下文中一共展示了NativeWindow::GetBrowser方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
// synchronously send a string from Node to browser, then return string result from browser to Node
Handle<Value> Window::SendSync(const Arguments& args) {
HandleScope scope;
NativeWindow *window = ObjectWrap::Unwrap<NativeWindow> (args.This());
if (window->GetBrowser()) {
// find browser's v8 context
CefRefPtr<CefV8Context> context = window->GetBrowser()->GetMainFrame()->GetV8Context();
// ensure it's usable and enter
if (context.get() && context->Enter()) {
// try to get "appjs.onmessage" function
CefRefPtr<CefV8Value> appjsObject = context->GetGlobal()->GetValue("appjs");
CefRefPtr<CefV8Value> callback = appjsObject->GetValue("onmessage");
if (callback.get()) {
// convert Node V8 string to Cef V8 string
CefV8ValueList argsOut;
argsOut.push_back(CefV8Value::CreateString(V8StringToChar(args[0]->ToString())));
// execute window.appjs fuction, passing in the string,
// then convert the return value from a CefValue to a Node V8 string
Handle<String> ret = CefStringToV8(callback->ExecuteFunction(appjsObject, argsOut)->GetStringValue());
// exit browser v8 context, return string result to Node caller
context->Exit();
return scope.Close(ret);
}
}
}
// likely error condition
return scope.Close(Undefined());
}
示例2: WndProc
// Processes messages for the main window.
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
NativeWindow* window = NativeWindow::GetWindow(hwnd);
CefRefPtr<CefBrowser> browser;
if (window) {
browser = window->GetBrowser();
}
switch (message) {
case WM_CREATE: {
RECT rect;
GetClientRect(hwnd, &rect);
Cef::AddWebView(hwnd, rect, url_, browserSettings);
return 0;
}
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
return 0;
}
case WM_SETFOCUS:
if (browser.get()) {
PostMessage(browser->GetWindowHandle(), WM_SETFOCUS, wParam, NULL);
return 0;
}
case WM_SIZE: {
window->UpdatePosition();
if (browser.get()) {
RECT rect;
GetClientRect(hwnd, &rect);
HDWP hdwp = BeginDeferWindowPos(1);
hdwp = DeferWindowPos(hdwp, browser->GetWindowHandle(), NULL,
rect.left, rect.top, rect.right - rect.left,
rect.bottom - rect.top, SWP_NOZORDER);
EndDeferWindowPos(hdwp);
if (emitFullscreen) {
emitFullscreen = false;
window->Emit("fullscreen");
} else {
window->Emit("resize", (int)LOWORD(lParam), (int)HIWORD(lParam));
}
}
break;
}
case WM_WINDOWPOSCHANGING: {
WINDOWPOS *position;
position = (WINDOWPOS*)lParam;
if (position->flags & SWP_STATECHANGED) {
if (IsIconic(window->handle_)) {
window->Emit("minimize");
} else if (IsZoomed(window->handle_)) {
window->Emit("maximize");
} else {
window->Emit("restore");
}
}
break;
}
case WM_MOVE:
window->UpdatePosition();
if (browser.get()) {
window->Emit("move", (int)LOWORD(lParam), (int)HIWORD(lParam));
}
break;
case WM_NCHITTEST: {
LRESULT result;
if (DwmDefWindowProc != NULL) {
if (DwmDefWindowProc(hwnd, message, wParam, lParam, &result)) {
return result;
}
}
break;
}
case WM_ERASEBKGND:
if (browser.get()) {
return 0;
}
break;
case WM_CLOSE:
if (browser.get()) {
browser->ParentWindowWillClose();
}
break;
//case WM_DESTROY:
// PostQuitMessage(0);
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
示例3: WndProc
// Processes messages for the main window.
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
// Callback for the main window
switch (message) {
case WM_CREATE: {
NativeWindow* window = ClientHandler::GetWindow(hwnd);
RECT rect;
GetClientRect(hwnd, &rect);
Cef::AddWebView(hwnd, rect, url_, browserSettings);
return 0;
}
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
return 0;
}
/*case WM_SETFOCUS:
if (g_handler.get() && g_handler->GetBrowserHwnd()) {
// Pass focus to the browser window
PostMessage(g_handler->GetBrowserHwnd(), WM_SETFOCUS, wParam, NULL);
}
return 0;*/
case WM_SIZE: {
NativeWindow* window = ClientHandler::GetWindow(hwnd);
if (window->GetBrowser()) {
RECT r;
GetClientRect(hwnd, &r);
HDWP hdwp = BeginDeferWindowPos(1);
hdwp = DeferWindowPos(hdwp, window->GetBrowser()->GetWindowHandle(), NULL, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_NOZORDER);
EndDeferWindowPos(hdwp);
}
window->UpdatePosition();
break;
}
case WM_MOVE:
ClientHandler::GetWindow(hwnd)->UpdatePosition();
break;
case WM_ERASEBKGND:
return 1;
// case WM_ERASEBKGND: {
// NativeWindow* window = ClientHandler::GetWindow(hwnd);
// if (window->GetBrowser()) {
// // Dont erase the background if the browser window has been loaded
// // (this avoids flashing)
// return 0;
// }
case WM_CLOSE: {
NativeWindow* window = ClientHandler::GetWindow(hwnd);
if (window->GetBrowser()) {
window->GetBrowser()->ParentWindowWillClose();
}
}
break;
//case WM_DESTROY:
// PostQuitMessage(0);
}
return DefWindowProc(hwnd, message, wParam, lParam);
}