2005年4月のエントリ

.NET Compact Framework。いろいろと制限はあるものの少しずつロビークライアントを実装してみる。以下開発メモ。

とりあえずTips的なものはMSのFAQが詳しい。


Visual Studio.NET 2003にはPocket PC 2002エミュレータというのが付属していて,VirtualPCっぽい感じ(というか提供元Connectixってなってるし同じものなんだろうけど)で使いやすいのだが,以下の設定でつまづく。

  • ホールドどうやってやるんだろう,と悩んでいたのだが,ホールド開始までが長いだけだった。かなりの時間押しっぱなしにしないと認識されない。
  • 実際に使う機会は少ないと思うが,ホストキーがデフォルトで右Altになっている。家のノートには右Altなんてないのでどうしようかと思っていたらVisual Studioの[ツール]-[オプション]の「デバイスツール」で設定できた。

HttpWebRequestでWebサーバにアクセスすると「チャンクの長さは無効です。」というエラーが表示される。これは.NET Compact Framework最新版では直っているようなので.NET Framework 1.0 SP3をダウンロードし,ファイル共有経由でnetcf.core.ppc3.x86.cabをエミュレータに配置して実行。


4号(誰)情報によると,.NETでは他のスレッドにメッセージを投げるとうまくいかないということでInvokeを使うらしいわけだが,.NET Compact Frameworkでは引数を付けてInvokeを呼べないという制限がある。で,スレッド上でのメソッド パラメータの呼び出しに載っているControlInvokerを使った。

ロビーの緊急待避モードの拡張を行う。とりあえず緊急待避モード時はタスクトレイに入るようにする。以前電卓を作ったときは意識していなかったが,Explorerを再起動したときにタスクバーからアイコンが消えるのは何とかならないかなあ,と検索してみる。IE4.0以上がインストールされているときはExplorerが再起動したときにTaskbarCreatedユーザメッセージが送られるとのことなのでそのタイミングでアイコンを再登録すればいいらしい。

ついでに緊急待避モードは今のままではウィンドウがアクティブの時にしかできないので,ウィンドウが隠れているときでもきくようにホットキーを設定できるようにする。制限事項として,他のアプリケーションと競合したらだめってのがあるが,とりあえずかぶらないようにして下さいというしかないのかな。

ロビーを荒らしながらPocketPC版ロビークライアント開発。LAN経由でネットにつなげられるようになっていないのでデバッグがめんどいながらも,サーバにつないでチャットするだけはできた。

2005041001

 

実際ここからがめんどいんだけど・・・。


ロビーでの要望。

  • ロビーは現状SJISでサーバへ送っているので表現できない文字がある。ちなみにローカルのリッチエディットには送信前の文字列を入れているのでローカルには表示される。
  • ロビークライアント背景色の指定。

1ヶ月の出張から帰宅。引っ越しの片づけをやらないと。


てことで1ヶ月C#開発をやってみて,なかなか開発効率もいいし作りやすいことが分かった。C#版ロビーでも作成してみますか。