fix
parent
aea565d318
commit
109406c7af
|
@ -70,7 +70,7 @@
|
|||
|
||||
## 📦 安装第三方依赖
|
||||
Windows 小程序运行环境需要安装以下依赖,请提前配置环境:
|
||||
- 请下载依赖包[点我下载](https://app.finogeeks.com/lib.tar.gz.bz2)
|
||||
- 请下载依赖包[点我下载](https://app.finogeeks.com/finclip-lib.tar.gz.bz2)
|
||||
- 下载完后解压到vendor/finclip/lib目录中
|
||||
- 建议使用 Visual Studio 2019 版本 [点我下载](https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0)
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
// FinClip.cpp : Defines the entry point for the application.
|
||||
//
|
||||
#include "Resource.h"
|
||||
#include "finclip_wrapper.h"
|
||||
#include "vendor/finclip/include/finclip_api.h"
|
||||
#include "vendor/finclip/include/finclip_wrapper.h"
|
||||
// Windows Header Files
|
||||
#include <windows.h>
|
||||
// C RunTime Header Files
|
||||
|
@ -15,9 +16,10 @@
|
|||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#pragma comment(lib, "FinClipSDKWrapper.lib")
|
||||
|
||||
#define MAX_LOADSTRING 100
|
||||
#pragma comment(lib, "FinClipSDKWrapper.lib")
|
||||
|
||||
using namespace std;
|
||||
using json = nlohmann::json;
|
||||
|
||||
|
@ -59,14 +61,29 @@ std::wstring utf8_decode(const std::string &str, int CP = CP_UTF8) {
|
|||
MultiByteToWideChar(CP, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
|
||||
return wstrTo;
|
||||
}
|
||||
class CustomApi : public IApi {
|
||||
|
||||
void invoke(const char *event, const char *param,
|
||||
FinClipSDKCallback callback) {
|
||||
class CustomWebApi : public IApi {
|
||||
|
||||
void invoke(const char *event, const char *param, IApiCallback *callback) {
|
||||
|
||||
std::string data = param;
|
||||
std::string e = event;
|
||||
MessageBox(NULL, utf8_decode(e).c_str(), utf8_decode(data).c_str(), 0);
|
||||
callback->Callback("{\"data\":\"ok\"}");
|
||||
}
|
||||
|
||||
FinClipApiType GetApiType() const { return FinClipApiType::kWebView; }
|
||||
|
||||
const char *apis() { return "customWebApi"; }
|
||||
size_t size() { return 1l; }
|
||||
};
|
||||
|
||||
class CustomApi : public IApi {
|
||||
|
||||
void invoke(const char *event, const char *param, IApiCallback *callback) {
|
||||
|
||||
std::string data = param;
|
||||
std::string e = event;
|
||||
callback->Callback("{\"data\":\"ok\"}");
|
||||
}
|
||||
|
||||
FinClipApiType GetApiType() const { return FinClipApiType::kApplet; }
|
||||
|
@ -197,6 +214,8 @@ void init_finclipsdk(int app_store, std::wstring wappkey, std::wstring wsecret,
|
|||
configpacker->AddConfig(config);
|
||||
CustomApi *c_api = new CustomApi();
|
||||
configpacker->RegisterApi(c_api);
|
||||
CustomWebApi *c_web_api = new CustomWebApi();
|
||||
configpacker->RegisterApi(c_web_api);
|
||||
Initialize(hInst, configpacker);
|
||||
is_initialized = TRUE;
|
||||
}
|
||||
|
@ -209,25 +228,8 @@ void finclip_applet_callback(IEvent *event) {
|
|||
const char *val = event->GetStr("hWnd");
|
||||
std::string s(val);
|
||||
hWnd_applet = (HWND)strtoul(s.c_str(), NULL, 16);
|
||||
/* ::SetParent(hWnd, gHwnd);
|
||||
::SetWindowPos(hWnd, NULL, 0, 0, 414, 736, 0);
|
||||
::ShowWindow(hWnd, SW_SHOWNORMAL);*/
|
||||
}
|
||||
event->Release();
|
||||
// HWND hWnd = event->GetHandle();
|
||||
// //::PostMessage(hWnd, WM_SYSCOMMAND, SW_MAXIMIZE, 0);
|
||||
// //::PostMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
|
||||
|
||||
// COPYDATASTRUCT CopyData;
|
||||
// char szSendBuf[100];
|
||||
// time_t timenow;
|
||||
// time(&timenow);
|
||||
// sprintf(szSendBuf, "%s", ctime(&timenow));
|
||||
// //注意,ctime()返回的字符串后面带了'\n' CopyData.dwData = 0;
|
||||
// CopyData.cbData = strlen(szSendBuf);
|
||||
// szSendBuf[CopyData.cbData - 1] = '\0';
|
||||
// CopyData.lpData = szSendBuf;
|
||||
// ::SendMessage(hWnd, WM_COPYDATA, (WPARAM)gHwnd, (LPARAM)&CopyData);
|
||||
}
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
|
||||
LPARAM lParam) {
|
||||
|
@ -237,6 +239,13 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
|
||||
case WM_COMMAND:
|
||||
if (LOWORD(wParam) == IDM_SENDMESSAGE) {
|
||||
WCHAR appid[1024];
|
||||
GetWindowText(hWnd_appid, appid, 1023);
|
||||
std::wstring wappid(appid);
|
||||
|
||||
InvokeWebApi(utf8_encode(wappid).c_str(), "test_custom_api",
|
||||
"{params:'a'}");
|
||||
break;
|
||||
}
|
||||
if (LOWORD(wParam) == IDM_START_APPLET) {
|
||||
WCHAR key[1024];
|
||||
|
@ -318,6 +327,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
int i = 0;
|
||||
int j = 0;
|
||||
::SetWindowPos(hWnd_container, NULL, 450, 10, 450, 750, 0);
|
||||
/*InvalidateRect(hWnd_container, NULL, TRUE);
|
||||
UpdateWindow(hWnd_container);*/
|
||||
break;
|
||||
}
|
||||
case WM_DESTROY: {
|
||||
|
@ -411,7 +422,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
CreateWindowW(L"BUTTON", L"open", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
|
||||
100, 250, 200, 50, hWnd, (HMENU)IDM_START_APPLET,
|
||||
((LPCREATESTRUCT)lParam)->hInstance, NULL);
|
||||
CreateWindowW(L"BUTTON", L"sendmessage",
|
||||
CreateWindowW(L"BUTTON", L"InvokeWebApi",
|
||||
WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 100, 350, 200, 50,
|
||||
hWnd, (HMENU)IDM_SENDMESSAGE,
|
||||
((LPCREATESTRUCT)lParam)->hInstance, NULL);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#include <windows.h>
|
||||
/**
|
||||
* @brief 自定义API类型,分别用于小程序和jssdk
|
||||
*
|
||||
*
|
||||
*/
|
||||
enum class FinClipApiType
|
||||
{
|
||||
|
@ -25,24 +25,20 @@ enum class FinClipApiType
|
|||
};
|
||||
/**
|
||||
* @brief 接口基类
|
||||
*
|
||||
*
|
||||
*/
|
||||
struct IKnown
|
||||
{};
|
||||
|
||||
/// SDK统一事件接口
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief API返回结果
|
||||
{
|
||||
"size": 100,
|
||||
"data": [[{},{}...],[{},{}...]]
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
struct IResultSet : public IKnown
|
||||
{
|
||||
|
@ -113,7 +109,7 @@ public:
|
|||
};
|
||||
/**
|
||||
* @brief SDK返回数据
|
||||
*
|
||||
*
|
||||
*/
|
||||
struct IEvent : public IResultSet
|
||||
{
|
||||
|
@ -141,6 +137,13 @@ struct IEvent : public IResultSet
|
|||
|
||||
virtual void Release() = 0;
|
||||
};
|
||||
|
||||
struct IApiCallback
|
||||
{
|
||||
|
||||
public:
|
||||
virtual void Callback(const char* event) = 0;
|
||||
};
|
||||
//函数指针回调
|
||||
/**
|
||||
* @params ret 调用结果 0成功,1失败
|
||||
|
@ -148,7 +151,7 @@ struct IEvent : public IResultSet
|
|||
* 如下格式
|
||||
*
|
||||
*/
|
||||
typedef void (*FinClipSDKCallback)(IEvent* event);
|
||||
typedef void (*FinClipSDKCallback)(IEvent*);
|
||||
|
||||
///数据打包器接口
|
||||
struct IFinPacker : public IKnown
|
||||
|
@ -260,7 +263,7 @@ struct IApi
|
|||
* @param param 参数
|
||||
* @param callback 结果回调返回
|
||||
*/
|
||||
virtual void invoke(const char* event, const char* param, FinClipSDKCallback callback) = 0;
|
||||
virtual void invoke(const char* event, const char* param, IApiCallback* callback) = 0;
|
||||
|
||||
/**
|
||||
* @brief Api类型,分为小程序api和webview api
|
||||
|
|
|
@ -44,7 +44,7 @@ DLL_EXPORT IPackerFactory* FINSTDMETHODCALLTYPE GetPackerFactory();
|
|||
* @warning 警告
|
||||
* @exception 异常
|
||||
*/
|
||||
DLL_EXPORT HRESULT FINSTDMETHODCALLTYPE CloseAllApplet();
|
||||
DLL_EXPORT int FINSTDMETHODCALLTYPE CloseAllApplet();
|
||||
|
||||
/**
|
||||
* @brief 函数简介
|
||||
|
@ -59,7 +59,7 @@ DLL_EXPORT HRESULT FINSTDMETHODCALLTYPE CloseAllApplet();
|
|||
* @warning 警告
|
||||
* @exception 异常
|
||||
*/
|
||||
DLL_EXPORT HRESULT FINSTDMETHODCALLTYPE CleanCache();
|
||||
DLL_EXPORT int FINSTDMETHODCALLTYPE CleanCache();
|
||||
|
||||
///小程序Api
|
||||
/**打开小程序
|
||||
|
@ -70,12 +70,30 @@ DLL_EXPORT HRESULT FINSTDMETHODCALLTYPE CleanCache();
|
|||
* @param callback 打开小程序回调
|
||||
* @return 0表示成功,1表示失败
|
||||
*/
|
||||
DLL_EXPORT HRESULT FINSTDMETHODCALLTYPE StartApplet(HWND hWnd, int apptype, const char* appid, const char* page_path,
|
||||
IFinPacker* params, FinClipSDKCallback callback);
|
||||
DLL_EXPORT int FINSTDMETHODCALLTYPE StartApplet(HWND hWnd, int appstore, const char* appid, const char* page_path,
|
||||
IFinPacker* params, FinClipSDKCallback callback);
|
||||
/**
|
||||
* @brief Set the Applet Pos object
|
||||
*
|
||||
* @param appid
|
||||
* @param appstore
|
||||
* @param left
|
||||
* @param top
|
||||
* @param width
|
||||
* @param height
|
||||
* @return DLL_EXPORT
|
||||
*/
|
||||
DLL_EXPORT void FINSTDMETHODCALLTYPE SetAppletPos(const char* appid, int appstore, int left, int top, int width,
|
||||
int height);
|
||||
|
||||
DLL_EXPORT HWND FINSTDMETHODCALLTYPE SetAppletPos(const char* appid, int appstore, int left, int top, int width,
|
||||
int height);
|
||||
DLL_EXPORT HRESULT FINSTDMETHODCALLTYPE FinClipShutdown();
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @return DLL_EXPORT
|
||||
*/
|
||||
DLL_EXPORT int FINSTDMETHODCALLTYPE FinClipShutdown();
|
||||
|
||||
DLL_EXPORT int FINSTDMETHODCALLTYPE InvokeWebApi(const char* app_id, const char* api_name, const char* params);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue