アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6でコモンダイアログにバグ?があるということ聞いたことがあるのですが、具体的な内容はわかりません。この問題は解決できるのでしょうか?
このコンポーネントの代わりになるものはあるのでしょうか?

VB6で作成して、.NETに移行しますが、このコンポーネントの使用は避けた方が良いでしょうか?

A 回答 (5件)

コモンダイアログでカレントディレクトリが変わる、というのは


バグではなくて仕様でしょう。
カレントディレクトリを変えたくない場合は、
cdlOFNNoChangeDir
という定数を使います(VB6 の場合)。

App.Path が変わる、というのが本当ならそれはバグですけど、
とりあえずこんなコードで、コモンダイアログで別のディレクトリに
移動しても、App.Path は変わりませんでした。

MsgBox "before: " & vbCrLf & "App.Path=" & App.Path & vbCrLf & "CurDir$=" & CurDir$
'CommonDialog1.Flags = cdlOFNNoChangeDir
CommonDialog1.ShowOpen
MsgBox "after: " & vbCrLf & "App.Path=" & App.Path & vbCrLf & "CurDir$=" & CurDir$

「App.Path」と、「カレントディレクトリ」は、
ぜんぜん別物で、同じトコロを指していることが多いからといって
混同しないように注意するべきです。
    • good
    • 0

> 「VB6の開発環境上で新規プロジェクトを作成し、


> プロジェクトファイルを1度も保存していないで実行する」

確認しました。カレントディレクトリにつられて App.Path が変わりますね。
この条件なら App.Path が変わるのも納得です。ありがとうございます。

さて、元質問者さん放ったらかしで申し訳ないので、元質問に関して調べてみました。

http://www.google.co.jp/search?q=%83R%83%82%83%9 …

Win95 や NT4 や VB4 の頃にはいくつかバグがあったようです。

個人的には、コモンダイアログではどうしても機能が不足する、というのでなければ、
あらかじめ用意されているコンポーネントを使った方がいいと思います。

標準のコンポーネントなら、バグがあっても
「マイクロソフトのバグなのでどうにもできません」
って言い訳が通用する……かな?
    • good
    • 0

> App.Path が変わる、というのが本当ならそれはバグですけど、



この現象についても体験したことがあります。
以下の場合に発生しました。

「VB6の開発環境上で新規プロジェクトを作成し、
プロジェクトファイルを1度も保存していないで実行する」

私は、
「プロジェクトファイルの位置が未定」なので、
「App.Pathの位置も未定」
仕方がないので、「カレントディレクトリを返す」。
と言う「仕様」だと思ってます。
    • good
    • 0

> ShowOpen や ShowSave を実行した後で App.Path や Curdir() がおかしくなる、と書かれています。



この現象は知ってましたが・・・仕様だと思ってました。

ちなみに、「CurDir」(カレントフォルダ)に関しては、
「ExcelVBA」で「Application.GetOpenFilename」を使用した場合、
「VB6」でWin32APIの「GetOpenFileName」を使用した場合、
「VB2005」で「OpenFileDialog」を使用した場合、
にも発生しますから、もし「バグ」だとすると、
「VBのコモンダイアログのバグ」と言うより、
「Windowsのコモンダイアログのバグ」だと思いますけど・・・
    • good
    • 0

検索してみました。



参考URLに
ShowOpen や ShowSave を実行した後で App.Path や Curdir() がおかしくなる、と書かれています。

私も、今回初めて知るバグです。ありがとうございます。

参考URL:http://www.google.co.jp/search?q=cache:http://na …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!