- D言語 Part34©2ch.net
353 :名無しさん@そうだ選挙に行こう[sage]:2015/12/14(月) 17:11:34.59 ID:reTGASBb - ここを参考に
http://www.kmonos.net/alang/wnd/topics/winapi.ja.html Win32API を使って drag & drop を実装してみたところ case WM_DROPFILES: の中で HDROP dr = cast(HDROP)wp; TCHAR[] buf = new TCHAR[MAX_PATH]; int l = DragQueryFile(dr, 0, buf.ptr, buf.length); if(l < buf.length) buf[l] = 0; string bs = to!string(buf[0..l]); version(Unicode){ writefln("0: %s", to!string(bs.toMBSz())); string name = bs; }else{ writefln("0: %s", bs); string name = fromMBSz(bs.toStringz()); } writefln("1: %s", name); とすると drag & drop したファイル名が 「森鷗(環境依存文字2)外(環境依存文字3)る.ext」 のとき 最後の name の表示が -version=Unicode したときとしないときで結果が違います toMBSz と fromMBSz とで不可逆なのは判るのですが MBSz -> UTF8 するときも結果が違うのは何故でしょうか? (ただし表示は違うのですが同じファイルが対象になってちゃんと動作します)
|