0

ComCtl32.lib要するに、ビジュアル スタイル マニフェストを埋め込み、利用可能な場合はバージョン 6 へのリンクを作成する関数を作成したいと考えています。これが基本的に私がやりたいことです:

void InitVivify() {
    // Embed visual style XML manifest
    #pragma comment(linker,                           \
        "\"/manifestdependency:type='Win32'"          \
        "   name='Microsoft.Windows.Common-Controls'" \
        "   version='6.0.0.0'"                        \
        "   processorArchitecture='*'"                \
        "   publicKeyToken='6595b64144ccf1df'"        \
        "   language='*'\""                           \
    )

    // Link common controls library
    #pragma comment(lib, "ComCtl32.lib")

    // Initialize controls used
    INITCOMMONCONTROLSEX InitCtrlEx;
    InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
    InitCtrlEx.dwICC = ICC_LISTVIEW_CLASSES | ICC_TAB_CLASSES | ICC_USEREX_CLASSES;
    InitCommonControlsEx(&InitCtrlEx);
}

これはおそらく良い習慣ではないことはわかっていますが、有効ですか?

4

1 に答える 1

4

プラグマ ディレクティブは、プリプロセッサ ディレクティブです。
それらは、実装が定義された方法で動作するようにします。
したがって、有効ですが推奨されません。

C++11 標準:

16.6 プラグマ指令 [cpp.pragma]

1 次の形式の前処理ディレクティブ

# pragma pp-tokensopt new-line

実装が実装定義の方法で動作するようにします。この動作により、変換が失敗したり、トランスレータまたは結果のプログラムが準拠していない方法で動作したりする可能性があります。実装によって認識されないプラグマは無視されます。

于 2012-10-05T08:56:12.310 に答える