windows.hをインクルードするとWindows APIのGetObject()はANSI/Unicode版のGetObjectA/GetObjectWに再定義されますが、この影響でMQDocument::GetObject()まで名前が変更されてしまいIntellisense使用時にマッピングされた関数名になってしまうので、あえてundefしております。
必要であればコメントアウトしても構いませんが、SDKの更新のたびに変更が必要になるので、それよりもWindows APIのほうをANSI/Unicode版のGetObjectA/GetObjectW()を直接呼び出すほうが手間もかからないと思います。
なお、GUIの描画にはWindows APIではなくMQWidgetベースのクラスの利用を推奨しております。こちらを利用すれば本体との外観の統一、High-DPIやマルチプラットフォームへの対応も容易になるメリットもあります。標準添付のプラグインではGetObjectはまったく使用していません。
2017-05-31 10:17
詳細な説明ありがとうございました。
GDIはMQWidgetを使っています。クリップボードへアクセスするのにGetObjectを使っています。
atlgdi.h(CDCなどのラッパー使っている)で大量のエラーが出るのでとりあえずコメントアウトでいきたいと思います。
2017-05-31 20:12
>こういった解決策を見つけました。GetObjectだけでいいのでMQPlugin.hに追加してもらえないでしょうか?
こういったコードをSDKに含めるべきかどうかは難しいですが、それよりこちらをご自身のコード内からwindows.hの後ろに追加でincludeすれば簡単に解決するのではないでしょうか。
2017-06-01 09:52
お言葉を返すようで気が引けるのですが・・・MQPlugin.hが#undef GetObjectしているのですからMQPlugin.h内で対策するのが普通かと思います。
ライセンス的なことでしたら、上のテクニックはそもそもSDKのwingdi.hでも似たようなことが書いてあり、誰が書いても同じようなものになる一般的なものので、コピペするようなことがなければ問題ないかと思います
2017-06-01 21:26