我想将原生相机应用程序嵌入到自定义表单中。 我要嵌入相机的RECT r属性如下:
r.top = 26; r.bottom = 220; r.left = 0; r.right = 320;
这是运行本机相机应用程序的方法:
HRESULT CPhotoCapture :: CameraCapture(HWND hwndOwner,LPTSTR pszFilename) { HRESULT hResult; SHCAMERACAPTURE shcc;
//Set the SHCAMERACAPTURE structure
ZeroMemory(&shcc, sizeof(shcc));
shcc.cbSize = sizeof(shcc);
shcc.hwndOwner = hwndOwner;
shcc.pszInitialDir = _T("\\My Documents");
shcc.pszDefaultFileName = _T("test.jpg");
shcc.pszTitle = _T("Camera Demo");
shcc.StillQuality = CAMERACAPTURE_STILLQUALITY_HIGH;
shcc.VideoTypes = CAMERACAPTURE_VIDEOTYPE_MESSAGING;
shcc.nResolutionWidth = 1024;
shcc.nResolutionHeight = 768;
shcc.nVideoTimeLimit = 15;
shcc.Mode = CAMERACAPTURE_MODE_STILL;
//display the camera capture dialog
hResult = SHCameraCapture(&shcc);
if(hResult == S_OK)
{
//TODO:: Write to log
}
return hResult;
}
从窗口调用上述方法,其尺寸等于r:
HRESULT hr = S_OK;
hr = m_PhotoCapture.CameraCapture(this->m_hWnd, L"test");
有谁知道如何修改上面的函数(hwndOwner)在矩形r中显示嵌入资源的方式?
答案 0 :(得分:1)
我认为您需要在自定义表单上放置一个图片框(大小与所需尺寸一样),然后传递图片框的窗口句柄而不是表单本身的句柄。
答案 1 :(得分:0)
你不太清楚hwndOwner指向的是什么。关于这可能如何工作的我猜想*你需要创建一个Window,它是你的主显示窗口的子窗口,其位置与你的rect匹配(并且是可见的),然后传递它的句柄,然后捕获API使用DShow将帧抓取的输出从摄像机传递到句柄所代表的窗口。