dddav 0.7をリリース

起動時のソフトの更新チェックと、転送しながらのリモートフォルダ移動に対応。

http://www.mylab.jp/program/dddav/

起動時の最新バージョン確認についてはプロキシを見ていないので通知されない可能性あり。

最終更新時刻: 2012年01月06日

ワイド文字列からマルチバイト文字列への変換

MFC/ATLであればCStringW/CStringAを使うのがお手軽。コンストラクタで変換してくれる。

Win32APIならMultiByteToWideChar/WideCharToMultiByteを使うんだけど面倒。

標準Cライブラリならmbtowc/wcstombs。

最終更新時刻: 2012年01月06日

OLE Drag&Dropで画面をロックさせない実装

OLE ドラッグ&ドロップ(以下D&D)の実装を見直し中。

VC++(MFC)で何も考えずにD&Dを実装すると、D&D中はアプリケーションがロックされる。

普通のアプリケーションならロックされる時間は短いので気にならない。

但し、dddavのようなドロップ後に時間のかかる処理(ファイル転送)をしている場合にはそれが気になるのでロックされないように考える必要がある。

具体的には次の点をdddavでは実装していた。

  • 時間のかかる処理(ファイル転送等)はスレッド処理する。
  • ドロップ後は自前でメッセージループを回す。

但し、これだけだとD&Dを開始したコントロール(リストビュー)がロックされる。

これはWM_NOTIFYメッセージで受け取ったドラッグ開始の処理中の中でドロップ後の処理を行うため、コントロールに次のメッセージが送られてこないせいであるためと考えられる。

よって、この対策として次の点も現在実装中である。

  • ドラッグの開始と同時に非表示のダミーウインドウにメッセージを投げ、そちらでドラッグを開始させる。

この他に、オートメーションのスレッドを立ててそちらでドラッグを開始する試みもしてみたが失敗した。

MFCのコード中で、メインスレッドかどうかのチェック判定をしているため別スレッドではドラッグが開始できないためである。

具体的にはmfc\oledrop1.cppのCOleDropSource::OnBeginDrag()の中に書いてある下記コードで判定していた。

// some applications steal capture away at random times
if (CWnd::GetCapture() != pWnd)
最終更新時刻: 2012年01月11日

dddav 0.8 リリース

今回は不具合修正と仕様変更のリリース。

http://www.mylab.jp/program/dddav/

日本語フォルダ名に関する不具合の修正。

  • ホスト設定の「リモートの初期フォルダ」に日本語フォルダ名が含まれる場合にパスが文字化けする
  • ホスト設定の「現在のフォルダ」押下時に日本語フォルダ名が含まれた場合に文字化けする

加えてバージョンチェックのHTTPアクセス時にインターネットオプションのプロキシ設定を参照するように仕様変更。

最終更新時刻: 2012年01月18日

dddav 0.9 リリース

http://www.mylab.jp/program/dddav/

1件の不具合修正といくつかの改善を含むリリース。

最終更新時刻: 2012年01月25日