MinGW Windows API バインディング ファイル shlobj.h には、次の行があります。
#define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS
ヘッダーのどこにも SEE_VALID_CMIC_FLAGS が定義されていません。MSDN で検索しても何もわかりません。
この行の目的は何ですか?
SEE_
SHELLEXECUTEINFO
プレフィックスは、構造内のフラグを参照します(明らか
ShellExecuteEx
にそれが使用されている場所から)。
CMIC_
prefix はCMINVOKECOMMANDINFO
構造体のフラグ用です( によって使用されIContextMenu::InvokeCommand
ます)。
それらの定義を確認すると、基本的に相互にミラーリングしていることがわかります。私の推測ではIContextMenu::InvokeCommand
、フラグを構造体にコピーしてSHELLEXECUTEINFO
呼び出すだけShellExecuteEx
です。
CMIC_VALID_SEE_FLAGS
/の値はSEE_VALID_CMIC_FLAGS
、現在の Win32 ヘッダーのいずれにも定義されていませんが、MinGW の作成者が独自のヘッダーを作成していたときに古い SDK に存在していたと思います。名前から、 と の両方 SHELLEXECUTEINFO
で有効なフラグのセットのようですIContextMenu::InvokeCommand
。私の推測では、これは次のIContextMenu::InvokeCommand
ような実装で内部的に使用されています。
if ( pici->fMask & ~CMIC_VALID_SEE_FLAGS )
{
// unsupported flags present. do some extra work
}
else
{
// we can use it as-is
SHELLEXECUTEINFO sei;
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = pici->fMask;
// ... etc
ShellExecuteEx(&sei);
}
要するに、この定義を気にしないでください。MSDN の文書化されたフラグを使用するだけです。