Category: ATL

Active Template Library related

ATL and Visual Studio C++.NET 2008 Goodies

This seems to be undocumented (Google does not know anything on this): ATL server executables may be run with /RegServerPerUser and /UnregServerPerUser switches to hopefully (this what would expect this to do without checking) register contained COM classes under HKEY_CURRENT_USER rather than HKEY_LOCAL_MACHINE and thus allow COM server run under credentials of non-administrative user. See…

Read the full article

How To: Implement DirectShow Filter using DirectX Media Object DMO (Part 3: Persistence, Automation and Property Pages)

Previously on the topic: Part 1: Starting the Project Part 2: Video Processing The principal task of video processing is done but there are still things mandatory for the filter to be usable. First of all, a custom interface is required to be able to control the filter from higher level application and to adjust…

Read the full article

How To: Implement DirectShow Filter using DirectX Media Object DMO (Part 1: Starting the Project)

This post is starting a step by step tutorial on writing a simple DirectShow filter using a simplified DirectX Media Objects (DMO) API. From the very scratch, the goal is to make a DirectShow/DMO video processing filter which implements video brightness and contrast correction. DirectX Media Objects are COM-based components. To implement a COM object…

Read the full article

FFDShow is getting more annoying

Surprisingly fast I got new problems having ffdshow installed as a part of K-Lite Codec Pack. No wonder though because let us take a look at registration information: Display Name: @device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\{0F40E1E5-4F79-4988-B1A9-CC98794E6B55} CLSID: {0F40E1E5-4F79-4988-B1A9-CC98794E6B55} Friendly Name: ffdshow Audio Decoder Path: C:\Program Files\K-Lite Codec Pack\ffdshow\ffdshow.ax Merit: 0x3fffffff Nice merit, ain’t it? What is merit anyway? Let us…

Read the full article

ATL’s CenterWindow

It appears that ATL does not center window correctly on multi-monitor systems. ATL code checks screen work area coordinates in CWindow::CenterWindow to ensure new position is within visible area, however since SystemParametersInfo/SPI_GETWORKAREA is used target rectangle is always on a primary monitor. This hotfix works the problem around: