我想在C ++ / WinRT中使用Camera(CameraCaptureUI或MediaCapture类)。
Microsoft文档样本代码由C#和JavaScript编写。
https://docs.microsoft.com/en-us/uwp/api/Windows.Media.Capture.CameraCaptureUI#code-snippet-1
MFC + C ++ / WinRT
void CWinRTtestDlg::OnBnClickedButtonToast()
{
// show toast
auto notificationManager = ToastNotificationManager::GetDefault();
auto toastXml = ToastNotificationManager::GetTemplateContent(ToastTemplateType::ToastText01);
auto textNode = toastXml.GetElementsByTagName(L"text").Item(0);
textNode.AppendChild(toastXml.CreateTextNode(L"Hello C++/WinRT!"));
auto toast = ToastNotification(toastXml);
toast.ExpirationTime(winrt::clock::now() + std::chrono::hours() * 2);
notificationManager.CreateToastNotifier().Show(toast);
}
此代码有效。
IAsyncAction Camera()
{
auto cameraManager = CameraCaptureUI();
cameraManager.PhotoSettings().CroppedAspectRatio(Size(4, 3));
cameraManager.PhotoSettings().Format(CameraCaptureUIPhotoFormat::Jpeg);
auto file{ co_await cameraManager.CaptureFileAsync(CameraCaptureUIMode::Photo) };
}
void CWinRTtestDlg::OnBnClickedButtonCamera()
{
winrt::init_apartment();
auto image = Camera();
}
但是此代码不起作用...
C ++项目设置
附加选项 /等待
C ++语言标准 C ++ 17
符合性模式否
答案 0 :(得分:0)
团队正在慢慢添加C ++示例,但这需要时间。在大多数情况下,音译不应该太难。如果它是C#构造函数,则将其替换为C ++构造函数。例如:
Widget widget = new Widget(123);
成为:
Widget widget(123);
属性在C ++中不存在,因此您只需添加括号并将其作为一种方法即可。您还可以使用协程,因此C#中的await
变成了C ++中的co_await
。