カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

ATL

C++&ATLでフォルダのファイル名に使えない文字を取得する

概要 Windows 10でC++&ATLでフォルダのファイル名に使えない文字を取得するには次の手順を踏みます。具体的なサンプルコード等は後に示します。 COMを初期化する。 デスクトップのIShellFolderインターフェイスを取得する。 ファイル名に使えない文字を取得…

C++&ATLでフォルダのファイル名の最大長を取得する

概要 Windows 10でC++&ATLでフォルダのファイル名の最大長を取得するには次の手順を踏みます。具体的なサンプルコード等は後に示します。 COMを初期化する。 デスクトップのIShellFolderインターフェイスを取得する。 ファイル名の最大長を取得したいフォル…

ATLのCAtlArray<CComPtr<...>>の動作確認

ATLのCAtlArray<CComPtr<...>>クラスの動作確認用サンプルコードです。CAtlArrayクラスは自身のデストラクタで要素のデストラクタを呼び出すかどうかを確認するために作成しました。結論として、CAtlArray<CComPtr<...>>クラスは自力で個々の要素を解放することなくデストラクタを呼び</ccomptr<...></ccomptr<...>…

IUnknownの実装例とATL CComPtr&CComQIPtrの動作確認

IUnknownを自前で実装する方法とATLメモリ管理クラスであるCComPtrクラスおよびCComQIPtrクラスの動作確認を兼ねたサンプルコードです。 main関数内部のコメントは主にOutputDebugStringで出力される内容です。 IUnknownインターフェイスではなくIClassFacto…

ATLのクラスでCOMのインターフェイス及びポインタ管理を簡略化する方法

ATLのクラスを利用することでCOMのインターフェイス及びポインタ管理を簡略化することができます。具体的には以下が利用可能です。 目的 ATLクラス IUnknown継承インターフェイスのポインタ管理 ATL::CComPtr、ATL::CComQIPtr CoTaskMemFree関数で解放するメ…

C++でATLを使用してデスクトップの最初のオブジェクトの表示名を取得する

ATLを使用してデスクトップの最初のオブジェクトの表示名を取得するサンプルコードです。 開発環境:Windows 10、Microsoft Visual Studio 2019、C++17 #define STRICT #include <Windows.h> #include <ShlObj.h> #include <atlbase.h> #include <atlcom.h> HRESULT CreateFirstObjectItemFromShellFold</atlcom.h></atlbase.h></shlobj.h></windows.h>…

Visual C++ 2017でATLを利用してWord.Applicationのインスタンスを作成する方法

概要 Visual C++ 2017でATLを利用してWord.Applicationのインスタンスを作成する方法のサンプルコードです。この例では作成したインスタンスからWordのバージョンを取得します。 ソースコード #define STRICT #include <Windows.h> #include <atlbase.h> using namespace::ATL; voi</atlbase.h></windows.h>…

Visual C++ 2017でATLを利用してScripting.FileSystemObjectのインスタンスを作成する方法

概要 Visual C++ 2017でATLを利用してScripting.FileSystemObjectのインスタンスを作成する方法のサンプルコードです。この例では作成したインスタンスから現在のフォルダの名前を取得します。 ソースコード #define STRICT #include <Windows.h> #include <atlbase.h> using names</atlbase.h></windows.h>…