• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XP/Vistaのフォームスタイルにしたら、ドラッグ時のアイコンがずれる)

XP/Vistaのフォームスタイルでアイコンのドラッグ時にずれが生じる

このQ&Aのポイント
  • VisualStudio2008+sp1でプログラムを作成している際に、XP/Vistaのビジュアルスタイルに変更したところ、ListViewで表示しているアイコンをドラッグすると、文字位置とアイコン位置がズレる問題が発生しました。
  • アイコンのドラッグ時に生じるズレを解決するために、XP/Vistaスタイルで位置補正を行ってみましたが、表示されているアイコン位置と文字位置とのズレは依然として存在します。
  • XP/Vistaスタイルでアイコンのドラッグ時にズレが生じないようにするためには、どのような対策を行えば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

そもそも >/* マウスカーソルがアイテム中央にくるように補正 */ >pt.x -= (item_rect.right-item_rect.left) / 2; >pt.y -= (item_rect.bottom-item_rect.top) / 2; が間違い。 ドラッグ中のイメージとカーソル位置の調整は、BeginDragのホットスポットの指定で行う。 例えば m_DragImage.BeginDrag(0, CPoint(15, 15)); だ。 これで、マウスカーソルが32×32サイズのアイコンの中心点に来る。 BeginDragを呼んでる部分が m_DragImage.BeginDrag(0, CPoint(0, 0)); ってなってる筈だから m_DragImage.BeginDrag(0, CPoint(15, 15)); に変えて、自前で位置調整してるルーチン(というか位置を狂わせてるルーチン)を取り払って GetCursorPos( &pt ); ScreenToClient( &pt ); m_DragImage->DragMove( &pt ); にすればよい。

lhouse
質問者

お礼

丁寧に説明していただきありがとうございます。 おかげで、カーソル位置にアイコン中心が来るようになりました。 ただ、未だに、ドラッグイメージのアイコン位置と文字位置との ズレが生じたままでしたので、もう少し調べてみます。

関連するQ&A