アプリ版:「スタンプのみでお礼する」機能のリリースについて

MFCでタスクトレーに常駐するプログラムを作成しております。
そこで、NOTIFYICONDATA構造体に関して教えていただきたいことがあります。
NOTIFYICONDATA構造体のuFlagsに指定する値で、
Shell32.dllのversion5.0以降のときに、NIF_INFO とNIF_STATEというのがあるみたいなのですが、これらを記述すると、定義されていませんというエラーが出てコンパイルできません。
version5.0はME/2000以降と書いてあったんですが、開発に使っているマシンはXPのPROです。
どういうことなのでしょうか?NOTIFYICONDATAのuFlagにNIF_INFOを使用するにはどうすればいいのでしょうか?
よろしくお願いします。

A 回答 (7件)

>エラーメッセージは追加したWINVERのところででてます。




#include "stdafx.h"



#define WINVER 0x0500

どっちが上ですか?

また、ソースの一番上でWINVERを定義するのではなく、stdafx.hの一番上で定義しても同じですか?


あと、VS.NET 2003のMFCで作成されたstdafx.hを確認したところでは明示的にWINVER 0x0400が指定してありました。

すでにstdafx.h中に指定されていたら、自分で定義を追加せずにその値を0x0500に修正してください。
    • good
    • 0

>エラーメッセージですが、


>「warning C4005: 'WINVER' : マクロが再定義されました。」

どこで出てます?
追加したWINVERに対して出てますか?
どこか他の場所ですか?

MFCということなので、stdafx.hを使っているのでしたら、そのなかでWINVERを定義してください。

この回答への補足

何度もありがとうございます。

エラーメッセージは追加したWINVERのところででてます。

補足日時:2004/03/24 14:12
    • good
    • 0

この回答への補足

ありがとうございます。

いろいろ調べていて、#define _WIN32_IE 0x0500というのを見つけて一度試したことはありますが、同じでした・・・。

補足日時:2004/03/24 14:11
    • good
    • 0

#define WINVER 0x0500



#include <shellapi.h>
より前に書いてますか?
あとエラーメッセージは全文を書いたほうがいいと思います。

この回答への補足

ありがとうございます。

ちゃんと#define WINVER 0x0500は#include <shellapi.h>より前に書きました。
でも駄目みたいです。

エラーメッセージですが、
「warning C4005: 'WINVER' : マクロが再定義されました。」
というのと、
「error C2065: 'NIF_INFO' : 定義されていない識別子です。」
が出ています。

なにか根本的になにか間違っているのでしょうか・・・(ToT)
よろしくお願いします。

補足日時:2004/03/23 18:43
    • good
    • 0

手元に現物がないので説明だけ。



ヘッダファイルのNIF_INFOの定義を見てみましょう。
対応しているヘッダファイルを使用しているのなら、#ifとかでコンパイル条件がついているはずです。

WINVERを0x0500でソースの一番上でdefineしてあげれば
NIF_INFO等を使用可能になりますよ。

参考URL:http://www.microsoft.com/japan/msdn/library/defa …

この回答への補足

ありがとうございます。

ヘッダファイル見てみました。
確かに#ifでvar5以上のときとかちゃんと定義されてました。
で、WINVERを指定してやってみたんですが、エラーが出たままです。。。
もうなにがなんだかわからなくなってきました。
どうすれば・・・(ToT)

補足日時:2004/03/23 18:23
    • good
    • 0

#include <shellapi.h>



では?
手元の環境ですとOKでした。
多分、No.1さん指摘のPlatformSDKがインストールされた環境です。

この回答への補足

ありがとうございます。

インクルードして試してみましたが、駄目でした。
同じようなエラーが出てコンパイルできません。
どうしたものでしょうか?

補足日時:2004/03/23 17:20
    • good
    • 0

もし使用しているのがVC++6.0なら、2000以降追加された機能はそのままでは使用できません。


最新のPlatformSDKをインストールする必要があります。

参考URL:http://www.microsoft.com/msdownload/platformsdk/ …

この回答への補足

ありがとうございます。

インストールしてみましたが、同じエラーが出てコンパイルできません。
他に何か考えられることはありませんでしょうか。

ちなみに開発環境はVC++6.0です。質問の際に抜けておりました。申し訳ありません。

補足日時:2004/03/23 17:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!