- PR -

ListViewでのSetCursor

1
投稿者投稿内容
f2
会議室デビュー日: 2005/08/07
投稿数: 2
投稿日時: 2005-08-07 07:55
はじめまして。
今回が初投稿です。

ListViewから項目を他のアプリへドロップした際のマウス位置を知りたく、
単純ですが以下のように作成してみました。

@ ListViewのマウスダウンイベントで、SetCursor(listView->hWnd)開始。
A ListViewのマウスアップイベントで、座標取得&ReleaseCursor()。
※ 環境はwinXP、VisualStudio C++ .netです。

しかし、項目をドラッグしたままListViewの外へ出ると、
マウスイベントがListView上で発生しません。

同じ手順でフォームやボタンコントロールでも試してみたところ、
こちらでは期待通りに動作してくれました。

ListViewで上記処理を行う方法をご存知の方がいらっしゃいましたら
ご教授頂けないでしょうか?

よろしくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-08-07 08:52
引用:

f2さんの書き込み (2005-08-07 07:55) より:
@ ListViewのマウスダウンイベントで、SetCursor(listView->hWnd)開始。
A ListViewのマウスアップイベントで、座標取得&ReleaseCursor()。
※ 環境はwinXP、VisualStudio C++ .netです。


で使っているフレームワーク(プロジェクトの種類)は何ですか?Windows FormsにはSetCursorと言うメソッドはないし、WindowsAPIやMFCのSetCursorはマウスカーソルの形状を指定する命令です。それとも単純にSetCuptureのTipoですか?
f2
会議室デビュー日: 2005/08/07
投稿数: 2
投稿日時: 2005-08-07 09:18
大変失礼致しました。
上記記事の"SetCursor"は、"SetCapture"の間違いです。
WinAPIを直接呼んでいます。

void リストビューのマウスダウンイベント {
  SetCapture( HWND(listView->Handle.ToPointer()) );
}
void リストビューのマウスアップイベント {
  座標取得();
  ReleaseCapture();
}

といった具合です。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-08-08 19:41
別スレッドで再質問した方が良さそうな予感。
現状、タイトルが内容を示していないもんねぇ。

MC++は使ったことが無いので、まったく詳しくないのです。
的を得ない回答かもしれませんが、乗りかかった船なので〜

HWND(...)は何者でしょうか?
SetCaptureは成功しているのでしょうか?
SetCaptureが成功していないとして、エラーコードは?
1

スキルアップ/キャリアアップ(JOB@IT)