アイコンの表示

解決


MAZIN  2006-07-31 09:12:23  No: 62601

WindowsXP VC++6.0でWindowsアプリケーションを作成中です。

プログラムも出来上がりつつあり、アイコンを入れようとしたのですが何度やってもうまくいきません。

ATOM InitApp(HINSTANCE hInst)
{
  WNDCLASSEX wc;
  wc.cbSize = sizeof(WNDCLASSEX);
  wc.style = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc = WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInst;
  wc.hIcon = (HICON)LoadImage(hInst, "ICON32", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED);
  wc.hCursor = (HCURSOR)LoadImage(NULL,
    MAKEINTRESOURCE(IDC_ARROW),
    IMAGE_CURSOR,
    0,
    0,
    LR_DEFAULTSIZE | LR_SHARED);
  wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  wc.lpszMenuName = NULL;  wc.lpszClassName = (LPCSTR)szClassName;
  wc.hIconSm = (HICON)LoadImage(hInst, "ICON16", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED);

  return (RegisterClassEx(&wc));
}

これだと、大きいほう(ファイルのアイコン?)は表示されているのですが、小さいほう(実行時に左上に出る)がWindowsのデフォルトのアイコンになってしまいます。
小さいほうのアイコンをリソースではなくファイルからの読み込みにしてみたのですが、そのときはうまくいきました。
ビットマップを表示させる場合もリソースから表示させようとすると表示できないところから、リソースの読み込みがうまく行ってないのかと思います。
しかし、大きいアイコンのリソースはうまく読み込めて、小さいほうのアイコンは読み込めないというのがわからず完全にお手上げです…

もちろんリソースにアイコンを登録してあります。

私は、まだまだヒヨッコで知らないことも多々ありますので、些細なことでも言っていただけると嬉しいです。

よろしくお願いします。


瀬戸っぷ  2006-07-31 10:03:25  No: 62602

> これだと、大きいほう(ファイルのアイコン?)は表示されているのですが、小さいほう(実行時に左上に出る)がWindowsのデフォルトのアイコンになってしまいます。
> 小さいほうのアイコンをリソースではなくファイルからの読み込みにしてみたのですが、そのときはうまくいきました。
> ビットマップを表示させる場合もリソースから表示させようとすると表示できないところから、リソースの読み込みがうまく行ってないのかと思います。
> しかし、大きいアイコンのリソースはうまく読み込めて、小さいほうのアイコンは読み込めないというのがわからず完全にお手上げです…

MSDNより…
> cxDesired 
> [入力]アイコンまたはカーソルの幅をピクセル単位で指定します。
> このパラメータに 0 を指定し、fuLoad パラメータに LR_DEFAULTSIZE を指定すると、
> システムメトリック値の SM_CXICON または SM_CXCURSOR を使って幅が設定されます。
> このパラメータに 0 を指定し、fuLoad パラメータで LR_DEFAULTSIZE を指定しないと、リソースの実際の幅が使われます。 

ということで、SM_CXICONとSM_CYICONが大きいアイコンのサイズになってるんじゃないでしょうか?
スモールアイコンの読み出し時のLR_DEFAULTSIZEを外してみてはどうでしょうか?


MAZIN  2006-08-04 19:39:28  No: 62603

私のちょっとしたミスのせいで起きた問題のようです。

発言ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加