掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
アプリのキャンバスハンドル取得方法 (ID:32415)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Canvasというか,デバイスコンテキストへの描画には注意が必要です. 例えば以下のコードを実行し, このForm1の上に他のウィンドウを表示し,再度前面に表示すると, 「埼玉県」という文字は消えてしまいます. procedure TForm1.Button1Click(Sender: TObject); begin Form1.Canvas.Font.Size :=50; Form1.Canvas.TextOut(10,20,'埼玉県'); Image1.Canvas.Font.Size :=50; Image1.Canvas.TextOut(20,20,'千葉県'); end; これを常に表示するようにするには,描画が必要になった時点で, WM_PAINTなどのメッセージを処理して描画します. 自身のスレッド内のプロセスであれば,WindowProc: TWndMethod;をフックして 行うこともできますが,他のアプリの場合は,この方法が利用できません. 他のアプリの場合は,グローバルなフックを使用して,メッセージを処理します. ただ,このフックは,DLL内にないと,他のアプリのメッセージを捕らえることが できません. これは,結構面倒です. 必要であれば,フックとかフック関数,メッセージなどで調べてください. 質問内容とは関係ありせんが,質問の際は,開発環境を書くようにした方が いいですね.Vistaも出て,Delphi2009も発売され,環境によって動作が 違い場合が,これからはもっと顕著になるでしょう. もっとも,初心者の場合は,質問は仕方はこれでいいのか,緊張して, いろいろ調べて発言しますが, ベテランになると,どうしてもうっかりということがよくあります(笑).
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.