タスクトレイのアイコンについて – プログラミング – Home

タスクトレイのアイコンについて
 
通知
すべてクリア

[解決済] タスクトレイのアイコンについて


RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

タスクトレイのアイコンについてなのですが
起動するとアイコンのスペースが空いてアイコンの絵は
表示されません。

リソーススクリプトは 
MYICON ICON DISCARDABLE icon.ico
としています。

#define MYTRAY_MESSAGE (WM_APP + 1)
NOTIFYICONDATA ni;

WinMainでMyInitNotifyIcon関数を呼び出しており
MyInitNotifyIcon関数は

int MyInitNotifyIcon(HWND hWnd)
{
memset(&ni, 0, sizeof(NOTIFYICONDATA));

ni.cbSize = sizeof(NOTIFYICONDATA);
ni.hWnd  = hWnd;
ni.uID  = 0;
ni.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
ni.hIcon = (HICON)LoadImage(hInst, MYICON, IMAGE_ICON, 0, 0, 0);
ni.uCallbackMessage = MYTRAY_MESSAGE;
strcpy(ni.szTip,   );
Shell_NotifyIcon(NIM_ADD, &ni);
return 0;
}

としています。

よろしくお願いします


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

LoadImage は間違いなく成功していますか?
まずはそこですね。


返信引用
RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

シャノンさん書き込みありがとうございます。
LoadImageが成功しているかどうか確認する方法
を教えていただけないでしょうか?


返信引用
keichan
 keichan
(@keichan)
ゲスト
結合: 18年前
投稿: 28
 

MSDNより
| 関数が成功すると、ロードされたイメージのハンドルが返ります。
| 関数が失敗すると、NULL が返ります。拡張エラー情報を取得するには、GetLastError
関数を使います。

明記されています。
質問する前に最低限の調査をしましょう。


返信引用
RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

keichanさん書き込みありがとうございます。

追加で↓やってみたのですがNULLが返ってるみたいで失敗となります。

HICON hIcon;
hIcon = (HICON)LoadImage(hInst, MYICON, IMAGE_ICON, 0, 0, 0);
if(hIcon == NULL) MessageBox(hWnd, 失敗, conhot ERROR, MB_OK);

確認の仕方はこれであっていますか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

とりあえず、その原因を GetLastError を使って確かめてください。

HICON hIcon = (HICON)LoadImage(hInst, MYICON, IMAGE_ICON, 0, 0, 0);
if(hIcon == NULL)
{
DWORD err = GetLastError();
.
.
.
}

どんなエラー内容なのかは ErrorLookup(VC6ならメニューのツールからエラー検索を選
択するとでる) や ウォッチ もしくは FormatMessage で確認してください。


返信引用
RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

if(hIcon == NULL)のところに
FormatMessageでやってみたところ
「指定されたリソースの種類がイメージファイルに見つかりません。」
というメッセージが表示されました。


返信引用
RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

Blueさん 書き込みありがとうございます。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>MYICON
は何処かで #define とかされていませんよね?

参考
http://wisdom.sakura.ne.jp/system/winapi/win32/win72.html

ちなみに、環境は必ず明記してください。
そうしないと、VSのバージョンでうまくいかないとかそういう問題があっても
見つけることができなくなりますので。
OS,VCのバージョン,プロジェクトの種類ぐらいは書いてください。


返信引用
RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

#define MYICON 100

としていますがこれが問題でしょうか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>としていますがこれが問題でしょうか?
そうです。

参考のサイト見ましたか?
「アイコン識別子に整数を使う」のところを見ればわかると思いますが、
MAKEINTRESOURCEを使うことになります。

最低限確認できることはしてから質問してほしいです。


返信引用
RYU
 RYU
(@RYU)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

Blueさんご丁寧にありがとうございました。
参考のサイトみていたんですが「アイコン識別子に整数を使う」
が原因だったとは気がつかずかなかったです。すみません。
MAKEINTRESOURCE をつかうことで無事アイコン表示されるように
なりました。

皆様ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました