デスクトップの更新の仕方

[戻る]
RiSK 2001/11/28(水) 18:43:21
VC++ でデスクトップを更新するにはどうしたらいいのでしょうか。

デスクトップ上で「F5」キーを押したときと同じような効果が欲しいのです。

ヘルプを見て、それらしい API はあるのですが、英語だったりでよく分かりません。
どなたか教えてください。

CdS 2001/11/28(水) 21:49:37
>ヘルプを見て、それらしい API はあるのですが、英語だったりでよく分かりません。

その「それらしいAPI」を書くべきだと思いますけど・・・。
合っているかどうかは別にして。
質問をする際の必要な情報だと思いませんか?

そのAPIが何なのかは分かりませんが、こんな感じでとりあえずできます。

    HWND hProgmanWnd = FindWindowEx(NULL, NULL, "Progman", "Program Manager");
    HWND hDefViewWnd = FindWindowEx(hProgmanWnd, NULL, "SHELLDLL_DefView", NULL);
    HWND hSysListWnd = FindWindowEx(hDefViewWnd, NULL, "SysListView32", NULL);

    PostMessage(hSysListWnd, WM_KEYDOWN, (WPARAM)VK_F5, (LPARAM)0);

このような掲示板の存在価値を考えて、上の方法で問題解決したとしても「それらしいAPI」を是非書いてください。

RiSK 2001/11/29(木) 08:13:22
CdS さん情報ありがとうございます。

確かに CdS さんがおっしゃるとおりです。
実はこのような質問をするのは初めてで、聞く態度がなっていませんでした。

ただ、自宅でネットにつながっているわけではなく、
つながるところへ移動しているうちにAPIの名前を忘れてしまったのです(汗)。
すいませんでした。

不親切な質問に答えて下さりありがとうございます。
家に帰ったら、早速、試してみます。
ちなみに私が思いこんでいたAPIとは違うようです。
それが、何であったかは今だ思い出せませんが…

RiSK 2001/12/05(水) 15:40:02
CdSさん。ありがとうございます。
ビルドしたところ、希望通りの動作をしました。

しかし疑問があります。一度、デスクトップに
UpdateWindow() で ON_PAINT メッセージを送ったのですが、
うまくいきませんでした。「F5」を押したときとは、違うようです。

初心者なので、詳しいことは分かりませんが、「F5」キーを押したときには、
ON_PAINT 以外のメッセージが出されているようです。

この点について、どなたか情報を頂けないでしょうか?
答えではなくても、調べるための方法のようなもので構いません。
よろしくお願いします。

CdS 2001/12/05(水) 18:03:44
「メッセージが出されている」というより、WM_KEYDOWNでF5を受け取ったら何かをしてる(メッセージを出している)
んでしょう。
多分何をしているかはWindowsを作った人しか分からないんでしょうけど、Spy++で見てみればある程度分かると
思います。
F5を受け取ったら一度アイテムを全削除して、再構築しているようです。
再描画とは意味が全然違うことは分かりますよね?

RiSK 2001/12/07(金) 11:38:46
[[解決]]
CdS さん、一連の質問に答えて頂きありがとうございます。

もうちょっと、スマートにデスクトップの更新をしたかったので、
最後の質問をしたのですが、内部的なことのようですので、
半分仕方ないという意味でしょうか?

とりあえず、助言通り Spy++ で調べはしてみますが、
疑問は全て解けました。本当にありがとうございます。

古いスレッドには追加発言できません。