WIN32 DLL调用ACTIVEX控件
前段时间手头上有一个刷脸的项目,需要在WIN32 DLL中调用第三方提供的ACTIVEX控件,同时人脸检测的过程中需要显示视屏流,同时需要响应控件的回调函数,项目过程中遇到许多的问题,项目刚结束终于有时间总结一下了。
一、WIN32 DLL调用ACTIVEX控件
由于第三方提供的ocx控件使用时需要提供窗口句柄,故在创建ocx控件的实例时,首先需要创建一个窗口,同时需要使用CAxWindow来承载ocx控件。
HANDLE g_hInst = NULL;
HWND g_hMainWindow = NULL;
_DCieCloudWalkOCX* IRCameraPtr = NULL;
static CAxWindow WinContainer;
//功能:注册窗口类。
//输入:szClassName : 类名;
//返回:成功,类原子,否则NULL。
ATOM RegisterWndClass(LPSTR szClassName, WNDPROC pProc, HINSTANCE hInst)
{
WNDCLASSEX wc;
ZeroMemory(&wc, sizeof(wc));
wc.cbSize = sizeof(wc);
wc.style = 0;
wc.lpfnWndProc = pProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND);
wc.lpszMenuName = NULL;
wc.lpszClassName = szClassName;
wc.hIconSm = NULL;
return RegisterClassEx(&wc);
}
//事件窗口过程
//功能:处理CLOSE和CANCEL消息,TIMER消息和同步处理消息。
//输入:hwnd : 窗口句柄;
// uMsg : 窗口消息;
// wParam, lParam : 消息参数;
//返回:0。
LRESULT CALLBACK SPEventWindowProc(HWND hwnd, U