任意ウィンドウのアイコンを変更

解決


origi  2005-07-11 05:35:48  No: 58237  IP: [192.*.*.*]

WinXP VC++.NET WinAPIです。
任意のウィンドウのハンドルを取得して、その中にあるアイコンを変更したいのですが、どのような関数を使えばよいですか?ハンドル取得までは分かるんですが・・・。

編集    削除
RAPT  2005-07-11 09:04:59  No: 58238  IP: [192.*.*.*]

MSDNで調べてみましたか?
WM_SETICON

編集    削除
PATIO  2005-07-12 02:59:01  No: 58239  IP: [192.*.*.*]

その中のアイコンというのが定義が不明確な気がします。
ウインドウと言ってもコントロールもウインドウに変わりはないですし。
「その中」とはいったいどういう意味なんでしょう?

編集    削除
origi  2005-07-12 03:07:44  No: 58240  IP: [192.*.*.*]

すごいあいまいですいません。|(_ _)|
その中とは、親を持つって意味でお願いします。あんま意味なかったです・・・。

自分はFindWindow()をつかって全てのウィンドウを列挙して、アイコンを使っていればそれを変更、
てかたちでしたいのですが、FindWindow()からその情報を取得って可能なんでしょうか?

編集    削除
シャノン  2005-07-12 07:55:44  No: 58241  IP: [192.*.*.*]

では「アイコンを使っているウィンドウ」とは何ですか?
タイトルバーを持つウィンドウの左上のアイコンだけなら簡単ですが、あらゆるアイコン——デスクトップもツールバーもメニューもメッセージボックスも——となると、汎用的な方法はありません。

編集    削除
origi  2005-07-13 06:04:47  No: 58242  IP: [192.*.*.*]

シャノンさんありがとうございます。
やっぱり全部というのは無謀ですね・・・・。
でも特定のアイコンを変更というのは可能ですよね?
その場合ってやはりスタイルを取得でしょうか?でもその後が分かりません。
検索してもわからないし・・・・。

編集    削除
シャノン  2005-07-13 19:39:44  No: 58243  IP: [192.*.*.*]

> その場合ってやはりスタイルを取得でしょうか?でもその後が分かりません。

ですから、どのウィンドウに対しても有効な簡単な方法はありません。
具体的に言えば、どのウィンドウに対してもスタイルの変更で対応できるとは限らない、ということです。
対象のウィンドウは何ですか?
トップレベルウィンドウですか?  ボタンですか?  スタティックテキストですか?  リストビューですか?  メニューですか?  ツールバーですか?
全てのウィンドウで方法がバラバラだとは言いませんが、まずは何のアイコンを変更したいのかがわからないと、ヒントも出しようがありません。

編集    削除
origi  2005-07-21 08:13:28  No: 58244  IP: [192.*.*.*]

内容が漠然すぎました。すみません……。
とりあえず、全部一気にということは無理ってことですね。
自分が考えていたのに近いのは、トップレベルウィンドウで使われているアイコンを変更です。
それで、できたらその子ウィンドウも調べて、さらにその使われているメニューも調べて・・・・とおもったんですが、
指摘されてるとおり無理っぽいです。

聞きたいんですが、トップレベルウィンドウのばあい、どのようにアイコンについて取得するんですか?

編集    削除
YuO  2005-07-21 20:22:25  No: 58245  IP: [192.*.*.*]

とりあえず,WM_GETICON
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_geticon.asp
を使えば取得できます。

ただし,ウィンドウを全て自分で描画している場合は,取得できないかもしれません。

編集    削除
origi  2005-07-31 10:36:33  No: 58246  IP: [192.*.*.*]

ありがとうございます 
まだやってはいませんがなんとかできそうです!
ありがとうございました。

編集    削除
origi  2005-08-09 03:39:22  No: 58247  IP: [192.*.*.*]

解決忘れてました・・・・・。

編集    削除