2016-07-08 32 views
0

Windowsで変更されたクリップボードをC++で監視するプログラムを作成しています。AddClipboardFormatListenerがこのスコープ内で宣言されていません

私は機能AddClipboardFormatListenerを使用しますが、コンパイラは私に、このエラーを与える:

AddClipboardFormatListener was not declared in this scope

私はwindows.hライブラリを追加する場合でも。

この作業を行うにはどうすればよいですか?

+2

あなたのコードの本質的な部分を投稿できるのであれば、私はできると思います。 – mvidelgauz

+0

おそらくNTDDI_VERSIONなどを適切に定義していないでしょう。 –

答えて

1

AddClipboardFormatListener()RemoveClipboardFormatListener()およびGetUpdatedClipboardFormats()は、Vista以降でのみ使用できます。 XP以前では、代わりにSetClipboardViewer()ChangeClipboardChain()を使用する必要があります。 Win32 SDKで

、リスナー関数は、プロジェクトは+だけ特別Vista用実行ファイルをコンパイルするように構成されることを意味、WINVERは少なくとも0x0600(別名_WIN32_WINNT_VISTA)である場合にのみ宣言されています。

詳細はUsing the Windows Headersを参照してください。

WINVERより小さい値でプロジェクトをコンパイルすると、コンパイル時に静的にリスナー関数にリンクすることはできません。そうしないと、XP以前の実行時に実行ファイルが読み込まれません。このような実行可能ファイルでVista +のリスナー関数を使用する場合は、実行時に関数をGetProcAddress()を使用して動的にロードする必要があります。

+1

ランタイムダイナミックリンクを使用しやすくするもう1つのオプションは、DLLの遅延ロードです(「遅延ロードDLLのリンカサポート」(https://msdn.microsoft.com/en-us/library/151kt790.aspx ))。特定のシステムで利用できないインポートを処理するには、カスタムフォールバック処理を実装することができます。これは[ヘルパー機能の理解](https://msdn.microsoft.com/en-us/library/09t6x5ds.aspx)で説明しています。 – IInspectable

関連する問題