ZAM3Dが生成するXAMLをC#で実装すると ー リソースモデル

リソースモデルはこんな感じ。

ZAM3Dが生成するXAMLをC#で実装すると

C++/CLI によるScreen Saver スケルトンコード

Windows Mobile の Today のプラグインを実装しようと思うと、WnProc を実装する必要があり、C#だけでは実装できない。

http://msdn.microsoft.com/en-us/library/ms839442.aspx

に、Creating a Pocket PC Today Screen Plug-in with the .NET Compact Framework という方法も載っているが、これだと共有メモリを使ってHTMLをレンダリングさせる方法なので、かえって見通しが悪そう。これなら、直接C++/CLIで実装して、一部を C#で書いたほうが楽そう。ただ、TodayのプラグインがC++/CLIで実装可能かどうか・・・C++/CLIでも実装可能なら、一部を C# で書くことも可能なので、ちょっと込み入った実装もだいぶ楽になるはず。

少し調べていたら、

http://www.atmarkit.co.jp/fdotnet/special/cppcli/cppcli_01.html

に「いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005」の記事があり、C++/CLI によるScreen Saver のサンプルがあったので、試してみた。

結果はWinProc をC++/CLIで動かすことができる。ということは、おそらく Windows Mobile の Today のプラグインも同様に動くと思われると、思ったが、スマートデバイスのプロジェクトテンプレートでは、C++/CLI がサポートされないみたい orz

ピーデー 川俣 晶さんがアップしているコードを VS2008用にちょっと修正したので、とりあえずメモ。

  • コンパイル時の設定に、構成プロパティ→全般に 共通言語ランタイムサポート をセット。
  • 構成プロパティ→リンカ→追加の依存ファイルに scrnsavw.lib comctl32.lib をセット。
  • コンパイルしたイメージを /Sで起動。

#include <stdafx.h>
#include <windows.h>
#include <scrnsave.h>

#using <mscorlib.dll>
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms; 

UINT_PTR wTimer;
WORD wElapse = 1000;
int xText=0, yText=0;

#define ID_TIMER 1

LONG CALLBACK ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch (msg)
  {
    case WM_CREATE:
      {
        wTimer = SetTimer(hWnd, ID_TIMER, wElapse, NULL);
      }
      break;

    case WM_TIMER:
      {
        HDC hdc = GetDC(hWnd);
        xText = rand() % GetDeviceCaps(hdc,HORZRES);
        yText = rand() % GetDeviceCaps(hdc,VERTRES);
        ReleaseDC(hWnd,hdc);
        InvalidateRect(hWnd,NULL,TRUE);
      }
      break;

    case WM_DESTROY:
      if( wTimer ) KillTimer(hWnd, ID_TIMER);
      break;

    case WM_PAINT:
      {
        PAINTSTRUCT ps;
        HDC hDC = BeginPaint(hWnd, &ps);
{
System::Drawing::
Graphics ^ g = Graphics::FromHdc((IntPtr)hDC);
Font font("MS ゴシック", 160);
SolidBrush brush( Color::Blue);
PointF position( (float)xText, (float)yText );
g->DrawString( "テスト!",  %font,  %brush, position );
}
EndPaint(hWnd, &ps);
      }
      break;

    case WM_ERASEBKGND:
      {
        RECT rc;
        GetClientRect(hWnd,&rc);
        FillRect((HDC)wParam, &rc,
            (HBRUSH)GetStockObject(BLACK_BRUSH));
      }
      return 0L;

    default:
      break;
  }

  return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}

BOOL WINAPI RegisterDialogClasses (HANDLE hInst)
{
  return TRUE;
}

BOOL CALLBACK ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  return FALSE;
}

Visual Studio 2008 でのモバイル開発環境 修復日記 二日目

  1. Visual Studio 2008 アンインストール
  2. 再起動
  3. Vusial Studio 2008 再インストール
  4. Windows Mobile 6 Professional SDK Refresh をRepair でインストール

でも、だめ。

image

こっ、これは・・・・

  1. Windows Mobile 5.0 Pocket PC SDK を Repair でインストール

だめ。orz

基本に戻って、Visual Studio 2008 セットアップディスクの READ ME を読む。ズバリそのものが載っているが、その手順はいちばん最初にやったんだけれど、解決しないんですけど。orz

—- ここから —–

2.3.1.7. 既に Windows Mobile 6 SDK がインストールされているにもかかわらず、Visual Studio 2008 が SDK を認識しない

Windows Mobile 6 SDK がインストールされているコンピュータに Visual Studio 2008 をインストールした場合、Visual Studio 2008 で SDK が認識されません。Windows Mobile 6 SDK を修復してもこの問題は解消されません。

この問題を解決するには

1. Windows Mobile 6 SDK をアンインストールします。

2. Windows Mobile 6 SDK を再インストールします。

—- ここまで —-

しかたないので、もう一度このとおりやってみるがだめ。orz.

Visual Studio 2008 でのモバイル開発環境 死ぬ・・・

Mobile SDK 6 をアンインストールして、再インストールしたら、こんなダイアログが出て、モバイル環境死ぬ。

image

以下、修復日記。

  1. Windows Mobile 6 Professional SDK Refresh 再インストールするも症状変わらず。
  2. Vista 再起動するも症状変わらず。
  3. Visual Studio 2008 修復セットアップするも症状変わらず。
  4. Windows Mobile 6 Professional SDK Refresh 再インストールするも症状変わらず。

くそっ。すべて再インストールか? ということで、再インストールしようとしたら、

image

くそっ。アンインストール決定。

Windows Mobile 6 SDK

Mobile 6 SDK で名称が変更になっているので、整理。

  • Windows Mobile for Smartphone = Windows Mobile Standard (download the Windows Mobile 6 Standard SDK)
  • Windows Mobile for Pocket PC = Windows Mobile Classic (download the Windows Mobile 6 Professional SDK)
  • Windows Mobile for Pocket PC Phone Edition = Windows Mobile Professional (download the Windows Mobile 6 Professional SDK)
  • Windows Mobile 6 Professional and Standard Software Development Kits Refresh に搭載されているエミュレーター

    • Windows Mobile 6 Standard SDK
      • Windows Mobile 6 Standard (176×220 pixels – 96 dpi)
      • Windows Mobile 6 Standard Landscape QVGA (240×320 pixels – 131 dpi)
      • Windows Mobile 6 Standard QVGA (320×240 pixels – 131 dpi)
    • Windows Mobile 6 Professional SDK
      • Windows Mobile 6 Classic (240×320 pixels – 96 dpi)
      • Windows Mobile 6 Professional (240×320 pixels – 96 dpi)
      • Windows Mobile 6 Professional Square (240×240 pixels – 96 dpi)
      • Windows Mobile 6 Professional Square QVGA (320×320 pixels – 128 dpi)
      • Windows Mobile 6 Professional Square VGA (480×480 pixels – 192 dpi)
      • Windows Mobile 6 Professional VGA (480×640 pixels – 192 dpi)

    Windows Mobile 6.1.4 Emulator Images に搭載されているエミュレーター

    • Windows Mobile 6.1.4 Standard
      DPI: 131 – Resolution: 320 x 320 pixels
      DPI: 131 – Resolution: 400 x 240 pixels
      DPI: 131 – Resolution: 440 x 240 pixels
    • Windows Mobile 6.1.4 Professional
      DPI: 96 – Resolution: 240 x 400 pixels
      DPI: 192 – Resolution 480 x 800 pixels

    Windows Mobile Specification

    最近いろいろな Windows Mobile が出てきて、わけわからないので、OS, 画面で整理してみた。

    メーカー 名称 型番 OS Form Factor  
    Willcom Willcom 03 WS020SH

    Windows Mobile 6.1 Classic

    800 x 480 WVGA
    Willcom Advanced W-ZERO3 [es] WS011SH Windows Mobile 6 Classic 800 x 480 WVGA
    Willcom W-ZERO3[es] WS007SH Windows Mobile 5.0 640 x 480 VGA
    Willcom W-ZERO3 W004SH Windows Mobile 5.0 640 x 480 VGA
    Willcom W-ZERO3 W003SH Windows Mobile 5.0 640 x 480 VGA
    EMobile Touch Diamond S21HT Windows Mobile 6.1 Professional 640 x 480 VGA
    EMobile EMONSTER lite S12HT Windows Mobile 6.1 Professional 320 x 240 QVGA
    EMobile EMONSTER S11HT Windows Mobile 6.1 Professional 320 x 240 QVGA
    EMobile EM One α  

    Windows Mobile 6 Classic

    800×480 WVGA
    EMobile EM One   Windows Mobile 5.0 for Pocket PC 800×480 WVGA
    SoftBank   X05HT Windows Mobile 6.1 Professional 640 x 480 VGA
    SoftBank   X04HT Windows Mobile 6.1 Professional 640 x 480 VGA
    SoftBank   X03HT

    Windows Mobile 6 Standard

    320 x 240 QVGA
    SoftBank   X02HT

    Windows Mobile 6 Standard

    320 x 240 QVGA
    SoftBank   X01HT

    Windows Mobile 6 Professional

    800 x 480 WVGA
    DoCoMo   HT-02A

    Windows Mobile 6 Professional

    640 x 480 VGA
    DoCoMo   HT-01A

    Windows Mobile 6 Professional

    640 x 480 VGA
    DoCoMo   F1100

    Windows Mobile 6 Standard

    320 x 240 QVGA
    DoCoMo   HT1100

    Windows Mobile 6 Professional

    320 x 240 QVGA

    Windows Mobile 6 は、Classic, Standard, Professional の3種類がある。

    • Standard…タッチスクリーンが無いスマートフォン向け
    • Professional….電話機能を有した従来の「Pocket PC Phone Edition」相当
    • Classic…電話機能の無い従来の「Pocket PC」相当

    バージョンアップ情報 W03DeGoogleMap V1.0.0.4 (Beta)

    Google Map API でいろいろ試していたら、意図せず Web Service I/Fを変更してしまったので、V1.0.0.3は動かなくなってしまいました。T T

    古いバージョンをアンインストールして、V1.0.0.4 をインストールしてください。

    変更点

    • Web Service I/Fを変更してしまったので、V1.0.0.3は動かなくなってしまいました。orz
    • 直接 Google Map API で地図を表示するようにしました。
    • 登録時間を表示するようにしました。

    ダウンロード

    W03DeGoogleMap.CAB

    説明のページ

    http://uchukamen.com/W03DeGoogleMapWeb/