ページ

2008-06-08

WhereNow更新

データファイルの場所を指定するための設定画面を追加しました。
データファイルは含まれていませんので、初めてダウンロードして頂く場合は別途住所データをダウンロードしてください。

 
データファイルの場所は"\microSDカード\wn"のような形で指定することになりますが、Todayプラグインの設定画面では何故か日本語が入力できません。(WM6.1で直っているといいですね)
更にフォルダ選択ダイアログも使えなかったので、ファイル選択ダイアログで住所データ(index.dat等)を指定するようにしてみました。
 
 
ところで、ファイル選択ダイアログでは選択されたファイルのフルパスが取得できますが必要なのはフォルダ名までなので 以下のような感じでファイル名部分を取り除くようにしていました。
if (GetOpenFileName(&ofn)) {
    if (S_OK == StringCchLength(szDataFilePath, MAX_PATH, &nLength)) {
        for (int i = nLength - 1; i >= 0; i --) {
            if (_T('\\') == ofn.lpstrFile[i]) {
                ofn.lpstrFile[i] = NULL;
                break;
            }
        }
    }
    SetDlgItemText(hDlg, IDC_DATA_FOLDER_PATH, ofn.lpstrFile);
}
 
でも実はOPENFILENAMEには nFileOffsetというメンバがあって、わざわざどこからがファイル名なのかを調べる必要はなかったみたいです。
if (GetOpenFileName(&ofn)) {
    if (0 < ofn.nFileOffset) {
        ofn.lpstrFile[ofn.nFileOffset - 1] = NULL;
    }
    SetDlgItemText(hDlg, IDC_DATA_FOLDER_PATH, ofn.lpstrFile);
}
 
毎度の事ですが、書く前にドキュメントくらは読んでおかないといけませんね...。
 

11 件のコメント:

  1. はじめまして、Use10KeyやWifiInfo便利に使わせてもらっております。m(__)m

    WhereNow、早速インストールしてみました。
    以前のバージョンで、パスをレジストリで指定しても(指定の仕方がまずかったのか)上手くいかなかったのですが、今回のバージョンではバッチリ利用することができました。
    ありがとうございます。

    しかし、ファイル選択ダイアログでファイルを指定した後、ファイル名が取り除かれないようで、チョットはまってしまいました。
    これに関して書き換えられたとのことですが、想定されていた動作でしょうか?

    返信削除
  2. d346prtさん こんばんは。
    ご連絡ありがとうございます。

    ご指摘の通りファイル名が取り除かれている状態が意図している動作になります。
    私のAd[es]ではファイル名が取り除かれているのですが、d346prtさんもAd[es]との事ですので原因ははっきりしません。

    nFileOffsetを使わないようにしたテスト版を作ってみましたので一度お試しいただけないでしょうか?
    お手数ですが、念のため 一度Todayから外した上でアップデートしてみてください。

    返信削除
  3. >kazuakiさん
    お手数をかけます。m(__)m
    早速テスト版をダウンロードさせてもらったのですが、どうやら中味が空のようです。
    アップし直してもらえないでしょうか?

    と、思ったのですが、どうやら原因が判ったようです。
    同じ機種なのに、再現性が無いとすると、こちらの環境が特殊なのではないかと考えてみたところ、ファイルダイアログそのものの違いではないかと思い、調べてみました。

    私の場合、FileDialogChangerにてgsgetfile.dllを呼び出していたのが拙かったようで、Disableにして標準ダイアログを利用したところ、問題なくファイル名が取り除かれたパスが取得されました。

    もうちょっと検証してから、報告すれば良かったですね。
    テスト版の作成までしていただいて、余計な手間をかけさせてしまいすみません。

    よろしければ、gsgetfile.dllへの対応をしてもらえたりすると、幸せになれる人が多いかもしれません。(^^ゞ

    返信削除
  4. 度々すみません。
    > よろしければ、gsgetfile.dllへの対応を
    というのは、もちろん「将来のバージョンで、余裕があれば」ということですので。m(__)m

    現状で問題なく、楽しめておりますので。

    返信削除
  5. d346prtさん こんばんは。
    ご確認ありがとうございます。

    テスト版の件、失礼しました。
    必要ないとは思いますが、一応アップし直しておきました。

    そういえばFileDialogChangerは使っていませんでした。
    gsgetfile.dll対応自体は気になっていたので今度試してみますね。

    返信削除
  6. >kazuakiさん
    ありがとうございます。
    試してみました。
    バッチリです!gsgetfile経由でも、ファイル名無しのパスが入りました。

    nFileOffsetにgsgetfileが対応してないのでしょうか。

    テスト版だと、自前で処理してるわけですね。
    これでgsgetfile対応としちゃっても良いような気もしますが。(^^ゞ

    返信削除
  7. あ、匿名になってしまった…
    ごめんなさい、言わずもがなですが、↑も私d346prtです。

    Googleアカウントもあるので、そちらを入力しても良いのですが、Bloggerは使ってないもので。(^^ゞ

    返信削除
  8. 先日の通りすがりです。
    対応お疲れ様でした。
    私のes環境でもばっちり動いております。
    FileDialogChangerへの対応はしてもらった方がいいとは思いますが、自分でファイル名部分を削除すればいいだけなので、大きな問題にはならないですね。

    ところで・・・。
    実は要望があります。
    Today画面で現在表示している住所テキストをクリップボードにコピーできるようにできないでしょうか。
    イメージ的には、タップ&ホールドでコピーメニューが出てくるような感じだと思います。
    ぶっちゃけモバイルGoogleMaps対応なんですが(笑)
    そんなことができたら、非常に便利ですなあと思った次第です。

    気が向いたら、実装してもらえるとありがたいです。

    返信削除
  9. こんばんは。
    コメントありがとうございます。

    d346prtさん>

    UK-taniyamaさんのページを拝見すると nFileOffsetは未サポートになっていますね。
    次回更新時にはテスト版の方式に変更するようにします。


    通りすがりさん>

    d346prtさんに確認いただいたので、問題がなければFileDialogChanger対応はこれでお茶を濁そうかと思っています(笑

    住所をクリップボードにコピーする事は可能だと思うので ちょっと調べてみます。
    用途はモバイルGoogleMapで住所を検索するためという事でよろしいでしょうか?

    デバイス側にモバイルGoogleMapがインストールされている前提ですが、現状でも画面上のボタンを押すことで座標と住所を渡しています。
    (モバイルGoogleMapのインストール場所については住所データ同様、選択可能にするべきですね)

    他にもこんな使い方ができるという情報があれば是非教えてください。

    返信削除
  10. あー、このボタンはそういう意味だったんですか。
    WhereNowを入れた後で、GoogleMapsをいれたので、全くこのボタンの意味がわかっていませんでした。というか、押しても反応しないので飾りだと思ってました(爆)

    であれば、少なくともこの用途でクリップボードに入れる必要はありませんね。

    よく調べもせずに申し訳ありませんでした。

    その他の地図系ソフトやサイトで、何か役に立つ場面もあるかもしれませんけど、微妙なところですね・・・。

    返信削除
  11. 通りすがりさん こんばんは。
    Googleマップはうまく起動しましたでしょうか?

    gsGetFile.dll対応とクリップボードの件 着手しました。
    特にクリップボードについては面白い使い方もできそうなので、もう少し検討してみますね。

    返信削除