The following example demonstrates automatically sizing the ltmfCapture object's video frame window to the actual size of the media.
// include the LEAD Media Foundation TOOLKIT header#include "ltmf.h"#include "resource.h"#include <tchar.h>#include <stdio.h>#include <assert.h>#define SZ_WNDCLASS_CAPTURE _T("CAPTURE WNDCLASS")#define WM_CAPTURENOTIFY (WM_USER + 1000)HINSTANCE g_hInstance; // application instance handleHWND g_hwndCapture; // video frame windowIltmfCapture* g_pCapture; // capture object interface pointer//// CaptureWndProc// video frame window procedure//LRESULT CALLBACK CaptureWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){IltmfDevices* pDevices;switch (message){case WM_CREATE:g_hwndCapture = hwnd;// window is the video window frameg_pCapture->put_VideoWindowFrame((long) hwnd);// force the frame window to be automatically resized to the videog_pCapture->put_AutoSize(VARIANT_TRUE);#ifdef _DEBUG{VARIANT_BOOL f;g_pCapture->get_AutoSize(&f);assert(f != 0);}#endif// set preview source video onlyg_pCapture->put_PreviewSource(ltmfCapture_Preview_Video);// enable previewg_pCapture->put_Preview(VARIANT_TRUE);// select the first video device availableg_pCapture->get_VideoDevices(&pDevices);pDevices->put_Selection(0);pDevices->Release();return 0;break;case WM_DESTROY:PostQuitMessage(0);break;}return DefWindowProc(hwnd, message, wParam, lParam);}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MSG msg;HRESULT hr;WNDCLASSEX wcex;g_hInstance = hInstance;// initialize COM libraryhr = CoInitialize(NULL);if(FAILED(hr))goto error;// register the video frame window classwcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = CaptureWndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = g_hInstance;wcex.hIcon = NULL;wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);wcex.lpszMenuName = NULL;wcex.lpszClassName = SZ_WNDCLASS_CAPTURE;wcex.hIconSm = NULL;if(!RegisterClassEx(&wcex))goto error;// create the capture objecthr = CoCreateInstance(CLSID_ltmfCapture, NULL, CLSCTX_INPROC_SERVER, IID_IltmfCapture, (void**) &g_pCapture);if(FAILED(hr))goto error;// create the video frame windowif(!CreateWindow(SZ_WNDCLASS_CAPTURE, _T("Capture"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, g_hInstance, NULL))goto error;ShowWindow(g_hwndCapture, nCmdShow);UpdateWindow(g_hwndCapture);// process until donewhile (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}error:if(g_pCapture)g_pCapture->Release();CoUninitialize();return 0;}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
