Windows Programming
- このページは
- テキスト処理
- スクリーンセーバ
- Visual Studio 上でのスクリーンセーバ作成方法
- スクリーンセーバのエラー:未解決の外部シンボル
- Visual Studio のスクリーンセーバTips
- 参考URL
- icon 作成
- setup 作成プログラム
- multimedia
- tips
- 用語
- 参考文献・参考ウェブページ
Windows プログラミングについてのメモ。
テキスト処理には整形処理なしで高速なTextOut() と
やや負荷があるが、整形機能を持つDrawText() が一般的
TextOut() で何か処理をしようとするとGetTextMetrics() などを
使いまわさねばならず、面倒。
OpenGL なら
- wglUseFontBitmaps
- wglUseFontOutlines
が出来るらしい。また、OpenGL とTextOut DrawText の相性悪い。
要調査。
参考:
同様にライブラリをインクルードすればBCC などでも作成可能だと思われるが、試していない。
スクリーンセーバ作成には以下のファイルをインクルード・プロジェクトに追加する。
ライブラリ・インクルードパスを追加しておけばいいのかも知れないが場合によって失敗したのでプロジェクトに追加しておく。
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib
ひょっとすると以下の#pragma の指定でもよいのかもしれない。しかし、成功するときと失敗するときがある。
#pragma comment(lib, "ScrnSave.Lib")
エラーとして、
error LNK2019: 未解決の外部シンボル
が表示されたら、このあとに続くライブラリをMSDN で検索し、プロジェクトにそのライブラリを追加する。
エラーが出たシンボルを以下に記載。
- InitCommonControlsEx
以下で解決できた。
#pragma comment(lib, "scrnsave.lib")
#pragma comment(lib, "comctl32.lib")
- (scrnsave.lib のエントリポイント。忘れてしまった。)
プロパティが表示されない
Visual Studio を入れているときに.NET Framework をアンインストールすると振る舞いがおかしくなる。
スクリーンセーバのコマンドライン
Windows の設定Dialog などに表示させるためにはコマンドの引数の対応を書いておけばよい。
- コマンドライン /c
- 動作設定ダイアログボックスを出力するようにする。
- コマンドライン /s
- スクリーンセーバを起動するようにする。
- コマンドライン /p
- コントロールパネルのスクリーンセーバの窓に表示する。
- コマンドライン /a
- パスワードの設定をする。
http://miyazaki.ddo.jp/pro/page11.html
デバッグができない
スクリーンセーバプログラムを作成するときにそのままではVisual Studio がすぐに終了してしまう。
これはコマンドライン引数を正しく指定していなかったためであった。
# スクリーンセーバ実行時にウィンドウのサイズをフルサイズに変更するために WM_MOUSEMOVE イベントを取得しているのかと思った。
Web 上で探したが、この情報を直接見つけることができなかった。
コマンドライン引数の指定は以下の手順で行う。(注意:VisualStudio2003 にての操作)
数週間も悩んでしまった問題。
- "プロジェクト"メニューを選択
- "PROJECT_NAME のプロパティ" を選択する。
- "PROJECT_NAME のプロパティ ページ" が表示される。
- タブメニューの"構成プロパティ" 以下の"デバッグ" を選択する。
- 表示された設定の"動作"を選択する。
- "コマンド引数" が表示され、スクリーンセーバの起動を意味する
"s" を指定する。
これでデバッグ時にスクリーンセーバが起動できる。
出力するファイル名称の指定
- "プロジェクト"メニューを選択
- "PROJECT_NAME のプロパティ" を選択する。
- "PROJECT_NAME のプロパティ ページ" が表示される。
- タブメニューの"リンカ" 以下の"全般" を選択する。
- "出力ファイル" にて出力するファイル名称の指定を行う。
Icon を作成したプログラムに適用させるにはIcon ファイルを作成し、プログラムに適用させる必要がある。
作成適用方法
- 何か画像ファイルを作成する。作成時はJPEG やBMP などなんでもよい。
ただし視認性のため、できれば正方であることが望ましい。
- Icon ぱくらなどで.ico ファイルを元画像から作成する。
- Visual Studio 2003 では、"リソースビュー"を開く
- "リソースの追加"を選択
- "Icon"を選択
- 新規作成を押す
- "リソースビュー"にアイコンが追加されている。
- 追加されたアイコンのプロパティを見てファイル名を確認
- 記載されているファイルがsln ファイルのあるディレクトリにあるのを確認。
- いったんVisual Studio を終了する。
- 当該ファイルを削除し、自分が作成したアイコンファイルに置き換える。
- Visual Studio を起動する。
- コンパイルすると出力ファイルのアイコンが指定したものになっている。
補足1:なぜか作成したアイコンを直接VS へインポートできない。
補足2:VS6.0 では確かリソースIDが"IDR_MAINFRAME"であればよかった。
作成したプログラムを配布するときにセットアッププログラムが
あると、設定を一度に行ってくれて便利になる。
そのWindows プログラムのセットアップをスクリプトで作成できる
フリーのソフトがInnoSetup。
商用利用も可能。
英語版だが、日本語セットアップを作成するスクリプトも
作成してくれた方がいるので日本語のセットアップ環境も作成可能。
参考:
マルチメディア(AVI, mp3 など)の再生にはMCI ライブラリ群を使用すると
とても楽にプログラムができるらしい。
MCIWndPlay() 関数を呼ぶだけで実装できるらしい。
参考:
|