たまには聞いてみようかと・・・。
XPの視覚テーマ対応のために .rc をつくり .exe.manifest を読ませてコンパイルした実行ファイルを Vista で動かすと、固まってしまうのですが、このような状態の解決手段をご存知の方はいらっしゃいませんか?
固まるというのは、フォームからアバウトボックスを ShowModal で呼び出して親フォームをクリックしても反応しないのに似ている感じで。
親フォームをクリックすると警告音がなって、閉じるまで操作できなくなるソレと似ています。
描画は更新されるけど、動かないし、閉じれないし、リサイズできません。
それで、クリックすると警告音が出ます。
UACはオフです。
XP上では普通に動いていて、manifest無しならば、Vista でも普通に動くのですが・・・。
TListViewも使ってます。
Delphi5 と TListView と manifest で VistaとWin7 で 同じようなことになってる人を google group のディスカッションで見かけましたがレスついてませんでした(; ;
情報お持ちでしたら、よろしくお願いします。
過去ログにありました。
https://www.petitmonte.com/bbs/answers?question_id=2789
申し訳ないです。
何か補足があればお願いします。
.exe.manifestをUnicodeで記述していないとか?
2バイト文字がなければ、shiftjisでも大丈夫だったような気もするけど、
はっきり覚えていません。
ちなみに、当方環境もDelphi5で、manifesをリソースに含めてコンパイル
したものがありますが、同じ現象に出くわしたことはないです。
フォームに何も貼り付けしていなくても、現象は出るんでしょうか?
レスありがとうございます。
.exe.manifest を単に.rc で取り込んでコンパイルしたもので TListViewを使っている場合に固まるようです。
その過去ログにある XPThemeManager に乗り換えたのですが、固まらなくなりました。
おそらくそういった部分も修正してくれているのでしょう。
XPTheme関連は自前で実装した部分がけっこうありまして、XPThemeManagerと併用できない部分があるようで、どちらも一長一短なのですが、ライセンス方面でもかなり緩いので、固まるよりははるかにマシなので、当面 XPThemeManagerに乗り換えることにしました。
ありがとうございました。
もしかして、TListView ならこの修正のことかな?
ソースがあるならComCtrl.pasを以下のように修正して、パスの通ったところに置く。
procedure TCustomListView.UpdateColumn(AnIndex: Integer);
if FImageIndex <> -1 then
fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES;
↓
if FImageIndex <> -1 then
mt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES
else
mask := mask and not (LVCF_IMAGE);
ツイート | ![]() |