1

我想将本机相机应用程序嵌入到自定义表单中。我要嵌入相机的 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中显示嵌入资源的方式?

4

2 回答 2

1

我认为您需要在自定义表单上放置一个图片框(大小为您想要的尺寸),然后传递图片框的窗口句柄而不是表单本身的句柄。

于 2008-12-12T15:15:29.063 回答
0

您不太清楚 hwndOwner 指向什么。我对这可能如何工作的**猜测*是您需要创建一个窗口,它是您的主显示窗口的子窗口,其位置与您的矩形匹配(并且是可见的),然后传递它的句柄,然后捕获 API 使用DShow 将帧抓取的输出从相机传输到句柄所代表的窗口。

于 2008-12-12T15:09:50.450 回答