XP/Vistaのフォームスタイルにしたら、ドラッグ時のアイコンがずれる
VisualStudio2008+sp1にてプログラムを作成しています。
http://msdn.microsoft.com/ja-jp/library/aa289524%28VS.71%29.aspx
http://www.koutou-software.co.jp/junk/apply-winxp-visualstyle.html
上記サイトを参考に、ダイアログ上のコントロールを
XP/Vistaのビジュアルスタイルに変更したところ、
ListViewにて表示しているアイコンをドラッグすると、
ビジュアルスタイルを変更する前と比べ、
文字位置とアイコン位置にズレが生じていました。
添付1が、以前までのスタイルでドラッグした場合。
添付2が、XPスタイルに変更してドラッグした場合。
添付3が、XPスタイルにてドラッグしたものを、ListViewの
アイテム上に重ねてみたものです。
下記が、OnDragOverで、ドラッグ時のイメージを作成している箇所の抜粋です。
--------------------抜粋 ここから------------------------
GetCursorPos( &pt );
/* アイテムの幅・高さを取得 */
list.GetItemRect( m_DragItem->iItem, item_rect, LVIR_BOUNDS );
/* マウスカーソルがアイテム中央にくるように補正 */
pt.x -= (item_rect.right-item_rect.left) / 2;
pt.y -= (item_rect.bottom-item_rect.top) / 2;
ScreenToClient( &pt );
m_DragImage->DragMove( pt );
--------------------抜粋 ここまで------------------------
※m_DragImageはCImageListの変数です
以前のスタイルであっても、
カーソルの中心にアイコンが来ないため、
位置の補正を加えています。
XPスタイルで位置補正を行ってみても、
表示されているアイコン位置と文字位置との
ドラッグで表示したアイコン・文字位置がズレているため
違和感があります。
XP/Vistaスタイルにて、このズレを生じさせないためには
何を行えばよいのでしょうか?
お礼
ご丁寧に教えていただきありがとうございます(つД`) 早速導入してみたんですが、結構好きなアイコンで安心しました(笑 HDKYZKさん本当にありがとうございました。m(_ _m