デスクトップの更新の仕方 – プログラミング – Home

デスクトップの更新の仕方
 
通知
すべてクリア

[解決済] デスクトップの更新の仕方


RiSK
 RiSK
(@RiSK)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

VC++ でデスクトップを更新するにはどうしたらいいのでしょうか。

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

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


引用未解決
トピックタグ
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

>ヘルプを見て、それらしい 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
 RiSK
(@RiSK)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

CdS さん情報ありがとうございます。

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

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

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


返信引用
RiSK
 RiSK
(@RiSK)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

CdSさん。ありがとうございます。
ビルドしたところ、希望通りの動作をしました。

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

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

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


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

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


返信引用
RiSK
 RiSK
(@RiSK)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

CdS さん、一連の質問に答えて頂きありがとうございます。

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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