無料パソコンがひそかに話題になっているようですね。
画面の広告を見ることに同意すれば、パソコンをプレゼントしてもらえるというもの。
idealab!の子会社のFree-PCってとこの企画なんだけど、コンパックとかの$500クラスの製品をくれるらしい。
しかもNetZeroとかいうプロバイダとの無料インターネット接続も提供されている。
その見返りというのか、ユーザはその会社へ年齢とか趣味など個人データを提供しなければならない。
そのデータに基づいてデスクトップに広告が常時表示されるという仕掛けのようだ。
これって日本から登録できないのかなぁ。
JStorage Ver2.00の開発へ着手
Ver2.00ではタスクトレイへの常駐を行うよう修正するつもりであった。
ところが、うまくいかない。
通常のWin32ではタスクトレイへのアイコン表示をしたことはあった。
まずCEでタスクトレイへのアイコン表示がうまくいかなかったのは
16x16のサイズのアイコンを表示するようにしなかったため
タスクトレイには空白のスペースだけが表示されなかった。
もちろんこれはLoadImage()を使って、明示的に16x16サイズを
読み込んでやれば解決した。
さて、これがいまだに解決していないのだが
ShowWindow(SW_HIDE)としてやっても、HIDEしてくれないのだ。
そのため、実行するとタスクトレイへアイコンが表示されるのだが
メインのウィンドウもそのまま表示されたままなんていう間抜けな状態になってしまっているのだ。
とりあえずいろいろと試してはいるのだが...
この問題が解決次第、JStorage Ver2.00を公開することにしよう。
はじめてのVC++を使ってのCEアプリのリモートデバッグをした。
手順としては、
1.まず持っているCEをデスクトップへ接続。
2.VC++でターゲットを、接続したCEのDebugモードに設定する。
-> これは、VC++のツールバーから選択できる。
3.Buildメニューから、Build MyAPP...(F7でも良い)を選択する。
-> この際に、デバッグ用のDLLなどがコピーされることもあるので
場合によっては、時間のかかることがある。
4.あとは、VC++の通常のデバッグと同様にデバッグできる。
-> アプリケーションの操作自体は、CEマシン上でできる。
CEマシンへコピーされた実行ファイルは、Startメニューに
表示される。
メニューからBuild MyApp...と選択した場合、DLLのコピーなども
想定して容量のチェックを行うようで、CE側の残りの容量が
少なかった場合、「Insufficient space on the target device」と
メッセージが表示されることもある。
そのような場合は、Batch Buildでアプリケーションのビルドを行い
Buildメニューの「Update Remote Output File」を選択する。
すると、ビルドした実行ファイルのみコピーされる。
リモートデバッグを行う際には、mfcのデバッグ用DLLとCEMON.EXEが
CE側にコピーされる。
これらのファイルはかなりサイズも大きいので注意した方がよい。
JStorageには、未だに複数起動を防止するための処理を行っていないことが判明。
本当は、Ver1.00からVer1.10にバージョンアップした際に盛り込むつもりであったのだが
すっかり忘れてしまっていた。
これまでのMFCプログラミングでは下のような感じで
複数起動を防止することができた
アプリケーションクラスのInitInstance()に
MFCプログラミングでちょっとした小技を発見。
ステータスバーというのは、ほとんどのWindowsユーザが知っているだろうが
Windowsの下に出ているバーで、エクスプローラだとファイル数だのディスクの空き容量だのが
表示されているやつである。
ここにアイコンの表示なんて洒落たことができるなんてらしい。
まずは、ステータスバーに表示してみたいアイコンを作成しよう。
とりあえず試してみたい人は、すでにあるIDR_MAINFRAMEリソースのアイコンを利用してみよう。
後は、ステータスバーの作成後に下のようにするだけ。
今日は、Libretto70の出荷状態への復元手順について書いてみることにします。
1年前のボーナスで念願のLibretto70を手に入れたのですが、さすがに
1年も使い込むとディスクの掃除が必要。
ってなわけで、復元だ!と行きたかったところなんですが
残念なことにおいらの持っているCD-ROMドライブは、Panasonicの
しょぼい倍速のやつ。
困ったことに標準でついてきたリカバリディスクでは、サポートされていない。
この買ったときに付いてくるリカバリディスクってのが
FDを指して、CD-ROMを入れておくと出荷状態まで自動的に復元してくれるという
ものなため、サポートされていないCD-ROMドライブを使って復元させるには
ちょっとしたテクニックが必要。
Librettoの他のモデルの事情は知らないので
以降の手順は、Libretto70+ノンサポートCD-ROMドライブという
環境での復元手順という、何とも限定された情報である。
関係ない人は、以降を読んでもあまり意味があるとは思えません。
どうもすいません。
1.リカバリCD起動ディスクAの1枚目を別のFDにコピーする。
2.a:\coreldrvに自分の持っているCD-ROMドライブのドライバをコピーする。
3.CONFIG.SYSを編集する。
さぁて、JStorageも完成して公開したし、今日は何するかねぇ。
とりあえず、Honey B'z Bros.のHPをGEOで作っていたんだけど、GEOは
メンテが大変になりそうなんで、Niftyへの移行を検討。
Niftyのメンバーズページはタダだし、いいかなぁと真面目に検討中。
と、結局このまま、Geoで公開突入〜〜!!!!
PsPC-MLでお知らせしたら、いきなりみなさん訪問してくれるではないですか。
いやぁ、ありがたいありがたい。
公開にあたり、WindowsCE Toolkit for VC++6で作ったJStorageで必要な
MFCのDLLはどうするかと検討していたが、配布しても問題ないもののようなので
JStorageも一気に公開!
Toolkitがβ版だっただけにちょっと不安だったが、良かった良かった。
ここのネタを絶やすことのないよう、CEプログラミングにも
精を出さないといかんなぁ。
...結局1日HTMLとの挌闘で終わってしまった。
明日からは、JMoneyの作成に取りかかることにしようか
それとも何か面白いネタあるかなぁ。
さぁ〜て、今日はRAMの情報も見れるようにJStorageを改造。
GetDiskFreeSpaceEx()でディレクトリパスに「\\」を指定してやれば良いだけなので簡単簡単。
...と思ってみたのだが、これだとStorage Memoryに割り当てている部分の情報しか取れない。
RAM全体の情報が必要なものかなぁ。
個人的にはStorageMemoryの情報さえ分かれば十分だと思っているのだが
JStorageを使ってみようと思う人はどこまでの情報が必要だと思うのだろうか。
まぁいいや、とりあえずRAMのStorage Memoryの情報のみの表示にしてリリースしちゃおう。
後は、要望があったら変更すればいいし。
よし、リリースに向けて配布の準備だ。
さて、ここで疑問が1つ。
JStorageはMFCを使って開発してきた。
そしてこれまで使ってきたのは、WindowsCE ToolKit for VC++6というβ版だったのだが
これに付いてきているMFCCEのDLLは再配布できるものなのだろうか...
や、や、やばい、これはリリース延期の危機!
とりあえずドキュメントをあさってみることにしよう。
分からん...
どこにも書いてない気がする。
それともおいらの英語力が未熟なのか。
仕方ない来週あっくんに聞いてみよ。
これまで雑誌などでCEプログラミングなどを目にはしていたが開発環境もなく
実機もなく、手を出そうともしていなかったが
11月にハワイでNino320のゲット!
12月にこのHPのオーナーであるあっくんよりWindows CE ToolKitのクリスマスプレゼント。
と、何の言い訳もできない環境が揃ってしまったりき丸。
しかし、本日1/8をもってついにCEプログラミングを開始。
ついでに日記でもつけてみようかと...
でもって、そのうちCEプログラミングテクニックとして
まとめてみようかな。
手始めにRAMやStorage Cardの容量を確認するためのツール「JStorage」の
開発をスタート。
BuildするとそのままActive Configurationで指定しているプラットフォームでの
実行まで進んでしまう。
BuildメニューからBatch Buildを実行すればコンパイルのみできるんだとさ。
TabCtrlでページのタイトルが化けてしまうでないの。
-> 以下のコードで「Page1」というタイトルを持ったタブページが表示される
と考えていたのだが...
Win32では問題なかったコードだったのに...
TCITEM tcItem;
tcItem.mask = TCIF_TEXT;
tcItem.pszText = "Page1";
m_TabCtrl.InsertItem(0, &tcItem);
しかし、表示されたタブページに表示されているテキストが
化けてしまうのである。
tcItem.pszText = "Page1";
ところが、この部分を
tcItem.pszText = TEXT"Page1";
とすると表示が期待通りにされるではないか。
TEXT()マクロは、ANSIコードをUnicodeへ変換するためのマクロです。
WindowsCEではUnicodeのみがサポートされているため、このマクロを
使用してUnicode文字列を使用しなければならないということが判明。
RAMやStrageCardの容量を確認するには
GetDiskFreeSpaceEx()を使用するんだよと、あっくんが教えてくれた。