Delphi5 と manifest と Vista or 7

解決


うにゃんこ  2010-10-17 17:40:44  No: 39363

たまには聞いてみようかと・・・。

XPの視覚テーマ対応のために .rc をつくり .exe.manifest を読ませてコンパイルした実行ファイルを Vista で動かすと、固まってしまうのですが、このような状態の解決手段をご存知の方はいらっしゃいませんか?

固まるというのは、フォームからアバウトボックスを ShowModal で呼び出して親フォームをクリックしても反応しないのに似ている感じで。
親フォームをクリックすると警告音がなって、閉じるまで操作できなくなるソレと似ています。

描画は更新されるけど、動かないし、閉じれないし、リサイズできません。
それで、クリックすると警告音が出ます。
UACはオフです。

XP上では普通に動いていて、manifest無しならば、Vista でも普通に動くのですが・・・。

TListViewも使ってます。
Delphi5 と TListView と manifest で VistaとWin7 で 同じようなことになってる人を google group のディスカッションで見かけましたがレスついてませんでした(; ;

情報お持ちでしたら、よろしくお願いします。


うにゃんこ  2010-10-17 18:57:45  No: 39364

過去ログにありました。

https://www.petitmonte.com/bbs/answers?question_id=2789

申し訳ないです。

何か補足があればお願いします。


ぽむぽむ  2010-10-18 18:59:53  No: 39365

.exe.manifestをUnicodeで記述していないとか?
2バイト文字がなければ、shiftjisでも大丈夫だったような気もするけど、
はっきり覚えていません。

ちなみに、当方環境もDelphi5で、manifesをリソースに含めてコンパイル
したものがありますが、同じ現象に出くわしたことはないです。
フォームに何も貼り付けしていなくても、現象は出るんでしょうか?


うにゃんこ  2010-10-24 14:50:06  No: 39366

レスありがとうございます。

.exe.manifest を単に.rc で取り込んでコンパイルしたもので TListViewを使っている場合に固まるようです。

その過去ログにある XPThemeManager に乗り換えたのですが、固まらなくなりました。
おそらくそういった部分も修正してくれているのでしょう。

XPTheme関連は自前で実装した部分がけっこうありまして、XPThemeManagerと併用できない部分があるようで、どちらも一長一短なのですが、ライセンス方面でもかなり緩いので、固まるよりははるかにマシなので、当面 XPThemeManagerに乗り換えることにしました。

ありがとうございました。


ぽむぽむ  2010-10-25 07:07:56  No: 39367

もしかして、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);


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加