如何将Miniblink用作JavaFX组件?

如何将Miniblink用作JavaFX组件?,java,c++,javafx,java-native-interface,jna,Java,C++,Javafx,Java Native Interface,Jna,是一个基于Chromium的精简紧凑的浏览器控件。某人 Miniblink提供了一个node.dll,可以使用JNA从Java访问它。我想将其集成到JavaFX中,但我不知道如何实现。我希望它是一个类似于javafx.scene.web.WebView的组件 这是一个使用C++和Windows API的实现。 //mb.cpp:定义应用程序的入口点。 // #包括“stdafx.h” #包括“mb.h” //用户界面 #包括“wke.h” wkeWebView m_网站; #定义最大加载字符串1

是一个基于Chromium的精简紧凑的浏览器控件。某人

Miniblink提供了一个node.dll,可以使用JNA从Java访问它。我想将其集成到JavaFX中,但我不知道如何实现。我希望它是一个类似于
javafx.scene.web.WebView
的组件

这是一个使用C++和Windows API的实现。

//mb.cpp:定义应用程序的入口点。
//
#包括“stdafx.h”
#包括“mb.h”
//用户界面
#包括“wke.h”
wkeWebView m_网站;
#定义最大加载字符串100
// 全局变量: 
HINSTANCE hInst;//当前实例
TCHAR szTitle[MAX_LOADSTRING];//标题栏文本
TCHAR szWindowClass[最大加载字符串];//主窗口类名
// 此代码模块中包含的函数的前向声明: 
ATOM MyRegisterClass(HINSTANCE HINSTANCE);
BOOL InitInstance(HINSTANCE,int);
LRESULT回调WndProc(HWND、UINT、WPARAM、LPARAM);
INT_PTR回调关于(HWND、UINT、WPARAM、LPARAM);
int APIENTRY双主,
_在当前情况下,
_在LPTSTR lpCmdLine中,
_In_uuint(nCmdShow)
{
未引用的_参数(HPPreInstance);
未引用的_参数(lpCmdLine);
//待办事项:在此放置代码。
味精;
HACCEL hAccelTable;
// 初始化全局字符串
加载字符串(hInstance、IDS\U APP\U TITLE、szTitle、MAX\U加载字符串);
LoadString(hInstance、IDC_MY、szWindowClass、MAX_LoadString);
MyRegisterClass(hInstance);
// 执行应用程序初始化: 
如果(!InitInstance(hInstance,nCmdShow))
{
返回FALSE;
}
hAccelTable=加载加速器(hInstance、MAKEINTRESOURCE(IDC_MY));
// 主消息循环: 
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(msg.hwnd、hAccelTable和msg))
{
翻译信息(&msg);
发送消息(&msg);
}
}
返回(int)msg.wParam;
}
//
//  函数:  MyRegisterClass()
//
//  目的:  注册窗口类。
//
ATOM MyRegisterClass(HINSTANCE HINSTANCE)
{
WNDCLASSEX wcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc=WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MY));
wcex.hCursor=LoadCursor(空,IDC_箭头);
wcex.hbrBackground=(HBRUSH)(彩色窗口+1);
wcex.lpszMenuName=NULL;
wcex.lpszClassName=szWindowClass;
wcex.hIconSm=LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
返回注册表类(&wcex);
}
//
//   函数:  InitInstance(HINSTANCE,int)
//
//   目的:  保存实例句柄并创建主窗口
//
//   注释: 
//
//        在此函数中,我们在全局变量中保存实例句柄并
//        创建和显示主程序窗口。
//
HWND m_wkeHwnd;
BOOL InitInstance(HINSTANCE HINSTANCE,int nCmdShow)
{
HWND-HWND;
hInst=hInstance;//将实例句柄存储在全局变量中
hWnd=CreateWindow(szWindowClass、szTitle、WS_OVERLAPPEDWINDOW、,
CW_usefault,0,CW_usefault,0,NULL,NULL,hInstance,NULL);
显示窗口(hWnd、nCmdShow);
更新窗口(hWnd);
//绑定用户界面
wkeInitialize();
RECT-rtClient;
GetClientRect(hWnd和rtClient);
rtClient.top+=0;
m_web=wkeCreateWebWindow(WKE_WINDOW_TYPE_控件,hWnd,rtClient.left,rtClient.top,rtClient.right-rtClient.left,rtClient.bottom-rtClient.top);
wkeLoadFile(m_web,“ski/index.html”);
//获取父窗口句柄
m_wkeHwnd=wkeGetHostHWND(m_web);
//jsBindFunction(“123”,js_msgBox,2);//js调用C++
wkeShowWindow(m_-web,TRUE);
返回TRUE;
}
//
//  函数:  WndProc(HWND、UINT、WPARAM、LPARAM)
//
//  目的:    处理主窗口的消息。
//
//WM_命令-处理应用程序菜单
//WM_油漆-绘制主窗口
//WM_销毁-发送退出消息并返回
//
//
LRESULT回调WndProc(HWND HWND,UINT消息,WPARAM WPARAM,LPARAM LPARAM)
{
int wmId,wmEvent;
PAINTSTRUCT-ps;
HDC-HDC;
开关(信息)
{
case WM_命令:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
// 分析菜单选择: 
交换机(wmId)
{
案例IDM_关于:
对话框(hInst、MAKEINTRESOURCE(IDD_ABOUTBOX)、hWnd、About);
打破
案例IDM_退出:
窗口(hWnd);
打破
违约:
返回DefWindowProc(hWnd、message、wParam、lParam);
}
打破
案例WM_油漆:
hdc=开始喷漆(hWnd和ps);
//待办事项:在此添加任意绘图代码...
端漆(hWnd和ps);
打破
案例WM_销毁:
PostQuitMessage(0);
打破
案例WM_大小:{
int nHeight=HIWORD(lpram);
int nWidth=低位(lParam);
移动窗口(m_wkeHwnd,0,0,nWidth,nHeight,TRUE);
}
打破
违约:
返回DefWindowProc(hWnd、message、wParam、lParam);
}
返回0;
}
// “关于”框的消息处理程序。
INT_PTR回调关于(HWND hDlg、UINT消息、WPARAM WPARAM、LPARAM LPARAM)
{
未引用的_参数(lpram);
开关(信息)
{
案例WM_初始化对话框:
返回(INT_PTR)TRUE;
case WM_命令:
if(LOWORD(wParam)==IDOK | | LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg、LOWORD(wParam));
返回(INT_PTR)TRUE;
}
打破
}
返回(INT_PTR)FALSE;
}

我很想帮你,但我不明白你的问题。你需要更狭隘地审视它,也许可以问一个具体的问题。你的问题基本上是“我不懂JNA,帮帮我。”你需要什么具体的帮助?链接库?映射