今回はぽけカレのソースを公開したいと思います。実はこのアプリは私がVC++を勉強して初めて作ったアプリです。なので最初はソースもかなりぐちゃぐちゃだったんですが(苦笑、最近行ったバージョンアップでだいぶシンプルになったので、分かり易いのではと思います☆
→ カレンダーを表示するだけのアプリ ぽけカレ ver1.02
【ダウンロード】
ぽけカレver1.02のソース(840KB)
◆ポップアップ式アプリを作るために◆
ぽけカレの売りはポップアップ式です。
ポップアップ式にしておくとアプリは起動中に画面内の好きな場所を移動させられるので便利です☆
方法は簡単で、CreateWindowでメインウィンドウ生成時にウィンドウスタイル(第3パワメータ)にWS_OVERLAPPEDを指定してあげればOKです。
◆2重起動で終了◆
ボタンに割り当てておけば、同じボタンで起動/終了が出来て使い勝手が向上するため、単機能アプリにおいては必須と思われる機能ですよね。
これを行うための方法の一つとしてFindWindowWという関数を利用します。
予めクラス名とウィンドウ名を定義しておいて(ぽけカレの場合はクラス名:PokeCale、ウィンドウ名:ぽけカレ)、WinMainプロシージャの最初でFindWindowW関数を呼ぶと、ぽけカレが起動していればそのウィンドウハンドル、起動していなければNULLが返ってきます。
これでぽけカレが起動中かどうかを判断できるので、それぞれの場合に応じて処理を行って下さい。
ぽけカレの場合は以下のような処理を行っています。
起動中で最前面に居る → ぽけカレを終了
GetForegroundWindowで返ってきた最前面のウィンドウハンドルとぽけカレのウィンドウハンドルが一致したら「最前面に居る」と判断してます。
起動中だけど他のアプリ等の後ろに隠れている → ぽけカレを最前面へ移動
最前面に移動させるにはSetForegroundWindowを使います。
◆カレンダーコントロールのサイズを取得◆
QVGA、VGA、RealVGAなど環境によってウィンドウの表示サイズが変わってきますよね。
便利なことに標準のカレンダーコントロールでは、SendMessageでMCM_GETMINREQRECTメッセージを送るとことで自分を表示するために必要な最低限のサイズRECT構造体で知ることが出来ます☆
他の標準コントロールにも同じようなメッセージはあるんですかねぇ‥
今後もこんな感じで自作アプリのソースを公開していく予定ですm(__)m
→ カレンダーを表示するだけのアプリ ぽけカレ ver1.02
【ダウンロード】
◆ポップアップ式アプリを作るために◆
ぽけカレの売りはポップアップ式です。
ポップアップ式にしておくとアプリは起動中に画面内の好きな場所を移動させられるので便利です☆
方法は簡単で、CreateWindowでメインウィンドウ生成時にウィンドウスタイル(第3パワメータ)にWS_OVERLAPPEDを指定してあげればOKです。
◆2重起動で終了◆
ボタンに割り当てておけば、同じボタンで起動/終了が出来て使い勝手が向上するため、単機能アプリにおいては必須と思われる機能ですよね。
これを行うための方法の一つとしてFindWindowWという関数を利用します。
予めクラス名とウィンドウ名を定義しておいて(ぽけカレの場合はクラス名:PokeCale、ウィンドウ名:ぽけカレ)、WinMainプロシージャの最初でFindWindowW関数を呼ぶと、ぽけカレが起動していればそのウィンドウハンドル、起動していなければNULLが返ってきます。
これでぽけカレが起動中かどうかを判断できるので、それぞれの場合に応じて処理を行って下さい。
ぽけカレの場合は以下のような処理を行っています。
GetForegroundWindowで返ってきた最前面のウィンドウハンドルとぽけカレのウィンドウハンドルが一致したら「最前面に居る」と判断してます。
最前面に移動させるにはSetForegroundWindowを使います。
◆カレンダーコントロールのサイズを取得◆
QVGA、VGA、RealVGAなど環境によってウィンドウの表示サイズが変わってきますよね。
便利なことに標準のカレンダーコントロールでは、SendMessageでMCM_GETMINREQRECTメッセージを送るとことで自分を表示するために必要な最低限のサイズRECT構造体で知ることが出来ます☆
他の標準コントロールにも同じようなメッセージはあるんですかねぇ‥
今後もこんな感じで自作アプリのソースを公開していく予定ですm(__)m
カレーは大好きですけど、カレーソースから作ることはないので、それを公開することはありませんです(笑)
あ、BASICはやってらっしゃるんですね。
普通のDOS時代のBASICにはWindowsアプリのようなウィンドウの概念が無いので、その分プログラムがシンプルですよね。
ただ、BASICもその他のプログラミング言語も基本的には「英単語の集まり」なので、その関数の訳とかを調べてみると、それがどういうことを行うためのものかが把握しやすいですよ☆
あと、ソースの多さには私も最初の頃驚かされましたけど、ほとんどが決まり文句のようなものなので、一度アプリを作ってしまえば、流用することもできますし。
ちなみにこのぽけカレのソースは約140行ですけど、今まで作った中で一番複雑なW03DataBackupになると、約830行あったります。
でも、パズルみたいにそれぞれの処理を組み合わせた結果そうなっただけなので、「ソースが多いから難しい」と難く考えることはないですよ☆
私も中学の時に買ってもらったパソコンでBASICを独学していろいろと作ってました☆
プログラムを始めるならまずBASICを勉強してみるのが一番の近道でからね♪
無償配布のeMbedded Visual ToolsにはeMbedded Visual Basic(以下、eVB)による開発環境も含まれているので、まずはそちらをいじってみるといいかもしれません。
Visual Basicはフォームにボタンやアイテムを配置した後にそれらにクリックすると最低限のソースを自動的に挿入してくれるので、あとはそこで自分がやりたいことを記述するだけでアプリが作れますからね♪
ただ、eVBで作ったアプリをPDA上で動かすには、VBランタイムをもインストールする必要があるので、その時点で個人的には自作アプリ制作用プログラミング言語の候補としては外れてますけども^^;
を、カレーソースの公開と一瞬見間違えて焦ってしまいました(^^ヾなんてこと言ってると、叱られてしまいますねm(_ _)m
星羽さん、更には、開発者の皆さんのご苦労を知ろうと、中身を覗いてみましたが…\(゜▽゜)/全く訳が判りませんでした。せめてbasicみたいな記述でもあれば、と思ったのですが、何一つ理解できず、また、ソースの多さに驚きです。
これほどの努力をして作ったソフトを無償で公開下さる皆様に、改めて敬服しました。心よりお礼申し上げたいと思います。
せめて、ホームページビルダーみたいに勝手にソースを書いてくれるソフトとか出るとありがたいのですが…