tmytのらくがき

個人の日記レベルです

0xEAの長押し

0xEA(XPANEL Key)にSortInchKeyで長押しを割り当てたいのになぜか割り当てられません。
前面のOKキーは離したときにDown:Upと続けてキーコードが発行されるので、割り当てられないのは仕方ないのですけど、XPANELはなんの変なこともなく押したときにD0xEA、離したときにU0xEAが発行されるのに長押し判定ができません。

なぜでなのでしょう。詳しい方いたら教えてください。

テキストファイルの処理

TodayTickerとかTodayNotesのテキスト処理はこんな感じの手抜き仕様です。

void CTodayItem::loadTextList()
{
    wchar_t dllpath[MAX_PATH] = {0};
    GetModuleFileName(m_hInstance, dllpath, MAX_PATH);
    for (int i = MAX_PATH - 1; dllpath[i] != L'\\' && i >= 0; dllpath[i--] = L'\0');
    wcscat(dllpath, L"TodayNotes.txt");

    // クリア
    m_texts.clear();

    std::wifstream ifs(dllpath);
    std::wstring s;
    while (std::getline(ifs, s))
        m_texts.push_back(s);
}

void CTodayItem::saveTextList()
{
    wchar_t dllpath[MAX_PATH] = {0};
    GetModuleFileName(m_hInstance, dllpath, MAX_PATH);
    for (int i = MAX_PATH - 1; dllpath[i] != L'\\' && i >= 0; dllpath[i--] = L'\0');
    wcscat(dllpath, L"TodayNotes.txt");

    std::wofstream ofs(dllpath);
    for (std::deque<std::wstring>::iterator it = m_texts.begin(); it != m_texts.end(); ++it)
        ofs << *it << std::endl;
}

なのでファイルのエンコードSJISなんですね。

人柱リリース - GPSRemider

XDAでこんなのがリリースされてしまったので負けてらんねぇ。というわけで人柱リリース。

以下注意事項

  • 動くか分かりません
  • 動いても全然違う場所で通知されるかもしれません
  • スリープにするとGPSがOffになる端末は手動で電源切れないようにしないといけません

そして使い方

  • 仕事に項目を追加します。このときのタイトルが通知の本文です。
  • 次に仕事にメモを追加します。メモの内容をGPSR:緯度,経度 としてください。
  • GPSReminderを起動します。
  • タスクトレイに赤丸のアイコンが出ます。タップして有効にするを選んでください。
  • メモに書いた緯度,経度の近くにくるとトーストが出るはずです。
  • 実行中に仕事を追加したときは、丸いアイコンをタップして仕事の再読込を選んでください

アイコンの意味

    • GPSを捕捉中。位置情報と仕事を比較してる。
  • 黄色の点滅
    • GPSが見つからない。
    • GPSReminderが無効。メニューから有効にしないと動かない

Download: GPSReminder0000.zip

ver,1.0.0.3

再起動直後の挙動が怪しいのを修正しました。ShellAPIの初期化完了は待たないとまずいらしいです。
再起動直後にデバイスがフリーズしてしまった場合は、しばらく待っているとシェルが反応するようになるのでTodayの設定から外してもらえればOKです。
ダブルバッファリングのバッファ確保に時間がかかっている + バッファが大きすぎて結局失敗する が原因なのでそのうち応答するようになります。

Download: SetupTodayNotes1003.CAB