tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: VB6のフォントのコモンダイアログが開かずエラー
投稿日: 2021/11/19(Fri) 19:23
投稿者魔界の仮面弁士
> 以下のコードでフォントのコモンダイアログを開けていたのですが、
VB2 を彷彿とさせるコードですね…。

> cdgBox.Action = 4
Action プロパティは、16bit 版当時のカスタムコントール版の
コモンダイアログで使われていた古い記述です。

現在は非推奨となっていますので、.Action = 4 という「プロパティへの代入操作」の代わりに、
「.ShowFont メソッドによる呼び出し」を使う事が望ましいです。


> 以下のコードでフォントのコモンダイアログを開けていたのですが、

関係あるかは不明ですが、久しぶりに手元の仮想マシン(Win7x86)上の VB6 を起動して、
[F2] のオブジェクト ブラウザから [MSComDlg] を選択したところ
100% の確率で開発環境がクラッシュする状況に陥っていました。orz

※OLEAUT32.DLL / 0xC0000005: Access Violation


> デバッグを行い、Actionプロパティへ設定するタイミングで実行時エラーが発生し、
> Err.Numberが32768となることまでは確認できています。

エラー発生時の Err.Source と Err.Description は調べられますか?

エラー定数(MSComDlg.ErrorConstants)で値が近いのは、
| -32768 : cdlDialogFailure
|  32763 : cdlNoInstance
ぐらいですね。32768 を示す定数は見つけられませんでした。

あとは、MSComDlg.FileOpenConstants に
|  32768 : cdlOFNNoReadOnlyReturn
というのがありましたが、これは流石に関係無さそう。


> 32768の意味合いが分からず、回避策がわからない状況です。
> ネットで調べてみましたが、有用な情報は見当たりませんでした。
同じ事象に悩んでいる人は、20年以上前から居たみたいですね…。
hhttps://groups.google.com/g/comp.lang.basic.visual.misc/c/7uAexJa8zhA/m/BcbXUl3CGmYJ

これといった回避策は発見できていませんが、たとえば
「Action プロパティを使うべきではない」という回答が付いている物がありました。
(やってみます、という返信があったものの、その後の結果報告なし)

あとは特定バージョンの OLEAUT32.DLL との組み合わせによる障害(いわゆる DLL Hell)もあったようです。

後者の DLL Hell の方は、Microsoft Knowlegebase の Q214845 を参照と
書いてありましたが…これはどうやら、後の KB214845 を指しているようです。
Win95〜Win98SE 用の資料なので、今となっては役には立ちそうにない KB ですが。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。