最近の記事
- 9/1 - 将棋始めました
- 5/16 - サーバー引っ越し
- 4/24 - 優先順位
- 3/17 - vbNullString と 空文字列 ""
- 3/15 - InputBox 関数の戻り値
- 3/13 - 紙と Excel と VBA
- 3/9 - 未だに Visual Basic 6
- 11/14 - ぼて閉鎖
- 11/9 - 関数オブジェクトの呼び出し
- 9/7 - メソッドとしての関数オブジェクト
Entering Passive Mode
今日は、必須の関数の実装を行う。
scrnsave.lib を使う場合、
以下の関数を用意する必要がある。
・RegisterDialogClasses
・ScreenSaverConfigureDialog
・ScreenSaverProc
ScreenSaverProc はプレビューと実行モードの時に使われる。
今日は、必要なリソースを作成しよう。
scrnsave.lib を使う場合、
以下のリソースが必要である。
・ID が IDS_DESCRIPTION (1) の文字列
・ID が ID_APP (100) のアイコン
・ID が DLG_SCRNSAVECONFIGURE (1002) のダイアログ
Windows でリソースを作る場合、
まず、リソーススクリプト (*.rc) を作成する。
scrnsave.lib を使ってスクリーンセーバーを作る場合、
C 言語を使った開発となるため、以下の用意が必要である。
・scrnsave.lib (Platform SDK 等)
・Microsoft 製の C コンパイラ(Visual C++ 等)
Express 版以外の Visual C++ があれば、
それだけで開発環境が十分に揃う。
Platform SDK のインストールは多分不要だが、
最新版のライブラリを使いたいなら入れておけば良い。
スクリーンセーバーを作るためには、
大体以下のような流れで処理を書く必要がある。
・規定のコマンド引数を処理
・設定モード (/C) 時
・設定ダイアログを表示
・プレビューモード (/P) 時
・プレビュー用小ウィンドウを作成
・スクリーンセーバーの絵を描画
スクリーンセーバーが普通の EXE と異なる点は、
コマンドライン引数の意味が厳密に決められていることだ。
スクリーンセーバーはシステムによって起動され、
その際に行うべき処理が、コマンドライン引数で示される。
コントロールパネルの画面から呼び出される事が多い。
そのため、スクリーンセーバーは、
以下の引数を処理しなければならない。
(大小文字は区別しない。####### は任意桁の 10 進文字列)
Windows におけるスクリーンセーバーは、
コントロールパネルの画面の設定で変更できる。
この画面では、スクリーンセーバーの設定や、デモ表示、
そしてプレビュー実行などが可能となっている。
スクリーンセーバーの実体は、Windows ディレクトリや、
System(32) ディレクトリにある、拡張子 SCR のファイルだ。
拡張子は SCR だが、その中身は普通の EXE と変わらない。
設定された時間の利用者の操作がない場合や、
コントロールパネルの画面で操作を行った場合、
システムによってスクリーンセーバーが起動される。
その際、処理内容はコマンドライン引数として示される。
まだ本調子ではないので、ライトなネタからやっていこう。
今回取り上げるのは、スクリーンセーバーだ。
スクリーンセーバーの役割は、その名前が示すとおり、
「画面」を「保護」するためにある。
この「画面」は、当初は表示装置そのものを表していた。
つまりは、表示用のディスプレイである。
最近のパソコンの表示装置には液晶ディスプレイが主流だが、
一昔前は、ブラウン管(CRT)のディスプレイが主流であった。
CRT ディスプレイは、その構造上、
同じパターン(特に明るい画素)を長時間表示していると、
蛍光体の焼きつきが発生し、寿命を縮める原因となる。