ここでVista対応について発表されたけど、実際にインストールしてみて起きたことと違うのはなんだろうか。
インストールメニューが起動しない → 無印FF11(2002年発売)をインストールしたときにはインストールメニュー出てきてたけど。
プレイオンラインビューアーが起動しない → FF関係はXP SP2互換モードに設定してあるためか、一度もない。
UAC昇格ダイアログを出すと表示が壊れるくらいしか問題ないんだけど。
ここでVista対応について発表されたけど、実際にインストールしてみて起きたことと違うのはなんだろうか。
インストールメニューが起動しない → 無印FF11(2002年発売)をインストールしたときにはインストールメニュー出てきてたけど。
プレイオンラインビューアーが起動しない → FF関係はXP SP2互換モードに設定してあるためか、一度もない。
UAC昇格ダイアログを出すと表示が壊れるくらいしか問題ないんだけど。
C#(.NET (Compact) Framework)のTextBoxコントロールは複数行のテキストを扱えるがスクロールを操作するメソッドが見当たらない。IRCのチャット表示領域で、末尾に新着テキストを追加していってもスクロールバーはずっと最上段にいて新着を表示できない、Selectメソッドでカーソル動かしてもスクロールバーは動かない、さて困った…ってところでググっていたのだけど、C#からWin32 APIを呼べるのくわーと知ったので(←C#は初めて使用)、直接エディットコントロールを操作することに。
まずは、エディットコントロールを操作するにはウィンドウメッセージを送りつけなくてはならないので SendMessage APIを呼べるようにクラス内で宣言する。
[DllImport("coredll.dll")]
extern static int SendMessage(IntPtr handle,
uint msg, uint wparam,uint lparam);
Windows Mobile 5.0がターゲットなのでcoredll.dllだけど、通常のWindowsなら kernel32.dll で。
すると、SendMessageが使えるようになるので、エディットコントロールにまつわるウィンドウメッセージ(EM系)を使ってスクロールさせてしまえばよい。
IRCの新着テキストを末尾に追加してそこまでスクロールできればよいので、
ChatTextBox.Select(ChatTextBox.Text.Length, 0);
末尾にカーソルを移動させて、
SendMessage(ChatTextBox.Handle, 0x00B7, 0, 0);
EM_SCROLLCARET(0x00b7)メッセージでキャレット位置までスクロールさせる。( ゜Д゜)ウマー
VS2005SP1にてWindows Mobile(WindowsCE)サンプルをビルドすると __GSHandlerCheck がないとリンクエラーになるので、/GS- オプションを付けて(C/C++のコード生成欄)バッファセキュリティチェックをオフにしないといけない。
という覚え書き。
MS系開発環境による組み込みソフトウェア開発経験はゼロのため(大抵gccかCodeWarriorだったし)まずは何をすればいいのかをチェキ。「W-ZERO3 開発環境」でぐぐるとeMbedded VC++4.0を使うようなページも見つかるのだけど、ウィルコムファンの連載記事第一回には、VS2005とWM5.0SDKとLocalizedエミュレータの3つがあればいいとあるので、こっちを頼りにする。
MSDNサブスクライバダウンロードからWindows Mobile 5.0 Developer Resource KitというVS2005以外のWM5.0開発ツール一式が詰まっているファイルをダウンロードしてインスコ。新規プロジェクトで用意されるテンプレコードが実行できたのでよし。
WindowsVistaなのでActiveSyncはインスコしてなす。