WinXP+VB6sp6の環境において、ListViewコントロール(lvwReport形式)のカラムヘッダを何回かクリックすると、以下のようにVB6.exeが落ちてしまいます。
【VB6.EXE - アプリケーション エラー】
例外 unknown software exception (0x0000094) がアプリケーションの 0x2758e4c5で発生しました。
↓OKを押すと、
【VB6.EXE - アプリケーション エラー】
"0x27618848" の命令が "0x059b1e90" のメモリを参照しました。メモリが "read" になることはできませんでした。
複数のプログラム、複数の画面にて同様の現象を確認しました。
これは何が原因なのでしょうか。VBのバグでしょうか。
分かる方いらっしゃいましたら教えてください。よろしくお願いします。
AllowColumnReorder プロパティを True にした状態、すなわち、
列位置変更可能なListViewにおいて、列をドラッグしようとすると
致命的なエラーが発生します。
(4月の時点で、MSにも障害扱いとして記録されています)
なお、現象としては、
・AllowColumnReorder を有効にしていると発生します。
・SP5では再現せず、SP6で再現します。
・XP/2003で再現しますが、2000以下では再現しません。
となっています。
現状では、再現しない組みあわせにする事で回避してください。
魔界の仮面弁士さん、ありがとうございます。
AllowColumnReorderはFalseになっています。カラムをドラッグではなく、単にクリックを何回かしただけで落ちてしまうんですよね…。
(落ちる状況としては同じ感じです。)
ランタイムはVB6SP6のものを使っているんですが、他のパソコン(WinXP/Win2000)では落ちなかったんです…!
なぜだかわかりません。
他に可能性はなにか考えられるでしょうか・・・。
> AllowColumnReorderはFalseになっています。
> カラムをドラッグではなく、単にクリックを何回かしただけで落ちてしまうんですよね…。
あれれ。私が認識している物とは、別の現象なのかな?
ちょっと確認させてください。
新規プロジェクトを追加し、そこにListViewを貼って下さい。
プロパティ設定等は、初期値のままにしておきます。
そして、下記のコードしか書いていない状態で、ListViewの
ヘッダをクリックしてみてください。やはり、エラーになりますか?
なお、ヘッダの操作はドラッグではなく、クリック操作でお願いします。
(クリック時には、マウスカーソルは、1ドットたりとも移動させないでください)
Option Explicit
Private Sub Form_Load()
With ListView1
.View = lvwReport
.AllowColumnReorder = False '当方では、Trueの時のみ落ちる
With .ColumnHeaders
.Add Text:="1列目"
.Add Text:="2列目"
.Add Text:="3列目"
End With
With .ListItems.Add(Text:="1-1").ListSubItems
.Add Text:="1-2"
.Add Text:="1-3"
End With
With .ListItems.Add(Text:="2-1").ListSubItems
.Add Text:="2-2"
.Add Text:="2-3"
End With
With .ListItems.Add(Text:="3-1").ListSubItems
.Add Text:="3-2"
.Add Text:="3-3"
End With
End With
End Sub
> 他のパソコン(WinXP/Win2000)では落ちなかったんです…!
2000では、その現象は起きないという報告を受けています。
問題は、XP の方ですね。
開発環境のXPでは落ちるが、実行環境のXPでは落ちないとの事ですので、
両者の比較を行って見てください。
・XPの標準ビジュアルスタイル(Lunaモード)を使っていますか?
それとも、クラシックモードを使っていますか?
・mscomctl.ocxのバージョンは同じですか?(SP6版は 6.1.97.82 です)
なお、当方で検証した限りでは、SP6適用後であっても、
何らかの理由で mscomctl.ocx が更新されていない場合は、
エラーは発生しないようです。
# WinXP + VB6/SP6の環境で、mscomctl.ocx だけを
# バージョン 6.0.81.77 に 差し替えてみた所、
# AllowColumnReorder = True でも正常動作しました。
> 他に可能性はなにか考えられるでしょうか・・・。
プログラムのバグなら別ですが、通常の運用でエラーが出る場合は、
掲示板に質問するのではなく、MSのサポートに問い合わせた方が良いですよ。
申し訳ありません・・。
> そして、下記のコードしか書いていない状態で、ListViewの
> ヘッダをクリックしてみてください。やはり、エラーになりますか?
これでテストしてみたのですが、エラーになりませんでした。
何故だ?とエラーになったプログラムをよーく見てみると…
AllowColumnReorderの値が、プロパティウィンドウではFalseになっているのですが、プログラム中でしっかりと「AllowColumnReorder = True」の記述が・・。
きっと、「クリックしたとき」というのも、微妙にドラッグされていたのですね…。
はい。魔界の仮面弁士さんのご指摘の通り、MSの障害が原因でした。
本当に申し訳ありませんでした。
でも原因が分かってスッキリしました!dllのバージョンやvbの環境もいろいろ調べてみても原因が分からなかったので…。
本当に助かりました。魔界の仮面弁士さん、ありがとうございました。
ツイート | ![]() |